From 493e9fb63a8bcc2e023e24c3a1dc292ce499b5b4 Mon Sep 17 00:00:00 2001 From: KMKoushik Date: Mon, 22 Apr 2024 12:46:53 +1000 Subject: [PATCH] Fix eslint --- .npmrc | 1 - apps/marketing/src/app/page.tsx | 6 ---- apps/web/package.json | 1 + .../app/(dashboard)/api-keys/add-api-key.tsx | 1 - .../src/app/(dashboard)/api-keys/api-list.tsx | 1 - .../web/src/app/(dashboard)/api-keys/page.tsx | 1 - .../(dashboard)/dashboard/dashboard-chart.tsx | 9 +----- .../src/app/(dashboard)/dashboard/page.tsx | 25 --------------- .../(dashboard)/domains/[domainId]/page.tsx | 3 -- .../domains/[domainId]/send-test-mail.tsx | 8 +---- .../app/(dashboard)/domains/domain-list.tsx | 2 +- apps/web/src/app/(dashboard)/domains/page.tsx | 1 - .../app/(dashboard)/emails/email-details.tsx | 2 -- .../src/app/(dashboard)/emails/email-list.tsx | 6 ---- .../(dashboard)/emails/email-status-badge.tsx | 2 ++ apps/web/src/app/(dashboard)/emails/page.tsx | 2 -- apps/web/src/app/(dashboard)/layout.tsx | 5 --- .../src/app/api/auth/[...nextauth]/route.ts | 1 - apps/web/src/app/api/ses_callback/route.ts | 2 +- apps/web/src/app/page.tsx | 1 - apps/web/src/server/api/routers/api.ts | 9 +----- apps/web/src/server/api/routers/domain.ts | 13 +++----- apps/web/src/server/api/routers/email.ts | 2 +- apps/web/src/server/api/trpc.ts | 32 +++++++++---------- apps/web/src/server/auth.ts | 2 ++ apps/web/src/server/aws/ses.ts | 1 + apps/web/src/server/aws/setup.ts | 2 -- apps/web/src/server/db.ts | 1 + .../src/server/public-api/api/send_email.ts | 2 -- apps/web/src/server/public-api/auth.ts | 1 - .../web/src/server/service/ses-hook-parser.ts | 2 +- apps/web/tsconfig.json | 11 +++---- packages/eslint-config/package.json | 11 ++++--- packages/eslint-config/react-internal.js | 3 ++ packages/ui/{.eslintrc.js => .eslintrc.cjs} | 0 packages/ui/package.json | 3 +- packages/ui/tsconfig.json | 2 +- packages/ui/tsconfig.lint.json | 2 +- pnpm-lock.yaml | 19 +++++++++-- turbo.json | 7 +++- 40 files changed, 72 insertions(+), 133 deletions(-) rename packages/ui/{.eslintrc.js => .eslintrc.cjs} (100%) diff --git a/.npmrc b/.npmrc index 39c9b23..e69de29 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +0,0 @@ -public-hoist-pattern[]=*prisma* \ No newline at end of file diff --git a/apps/marketing/src/app/page.tsx b/apps/marketing/src/app/page.tsx index 8e07964..4f3fcc0 100644 --- a/apps/marketing/src/app/page.tsx +++ b/apps/marketing/src/app/page.tsx @@ -1,7 +1,6 @@ "use client"; import { motion } from "framer-motion"; -import { Mail, Rocket } from "lucide-react"; import { RocketLaunchIcon, EnvelopeIcon, @@ -9,7 +8,6 @@ import { ChatBubbleOvalLeftEllipsisIcon, BellAlertIcon, } from "@heroicons/react/24/solid"; -import { Code } from "@unsend/ui/src/code"; export default function Home() { return ( @@ -31,8 +29,6 @@ export default function Home() { {}} - onHoverEnd={(e) => {}} transition={{ type: "spring", stiffness: 400, damping: 10 }} href="https://app.youform.io/forms/caja89vr" target="_blank" @@ -141,8 +137,6 @@ email.send({ {}} - onHoverEnd={(e) => {}} transition={{ type: "spring", stiffness: 400, damping: 10 }} href="https://app.youform.io/forms/caja89vr" target="_blank" diff --git a/apps/web/package.json b/apps/web/package.json index 1c4015d..f4640d7 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -49,6 +49,7 @@ "zod": "^3.22.4" }, "devDependencies": { + "@next/eslint-plugin-next": "^14.2.2", "@types/eslint": "^8.56.2", "@types/mime-types": "^2.1.4", "@types/node": "^20.11.20", diff --git a/apps/web/src/app/(dashboard)/api-keys/add-api-key.tsx b/apps/web/src/app/(dashboard)/api-keys/add-api-key.tsx index 48ce34b..fa42c35 100644 --- a/apps/web/src/app/(dashboard)/api-keys/add-api-key.tsx +++ b/apps/web/src/app/(dashboard)/api-keys/add-api-key.tsx @@ -6,7 +6,6 @@ import { Label } from "@unsend/ui/src/label"; import { Dialog, DialogContent, - DialogDescription, DialogFooter, DialogHeader, DialogTitle, diff --git a/apps/web/src/app/(dashboard)/api-keys/api-list.tsx b/apps/web/src/app/(dashboard)/api-keys/api-list.tsx index b7db737..2cd5a56 100644 --- a/apps/web/src/app/(dashboard)/api-keys/api-list.tsx +++ b/apps/web/src/app/(dashboard)/api-keys/api-list.tsx @@ -9,7 +9,6 @@ import { TableRow, } from "@unsend/ui/src/table"; import { formatDistanceToNow } from "date-fns"; -import Link from "next/link"; import { api } from "~/trpc/react"; export default function ApiList() { diff --git a/apps/web/src/app/(dashboard)/api-keys/page.tsx b/apps/web/src/app/(dashboard)/api-keys/page.tsx index 144cf0a..a38d994 100644 --- a/apps/web/src/app/(dashboard)/api-keys/page.tsx +++ b/apps/web/src/app/(dashboard)/api-keys/page.tsx @@ -1,4 +1,3 @@ -import type { Metadata } from "next"; import ApiList from "./api-list"; import AddApiKey from "./add-api-key"; diff --git a/apps/web/src/app/(dashboard)/dashboard/dashboard-chart.tsx b/apps/web/src/app/(dashboard)/dashboard/dashboard-chart.tsx index 411217d..28ec89b 100644 --- a/apps/web/src/app/(dashboard)/dashboard/dashboard-chart.tsx +++ b/apps/web/src/app/(dashboard)/dashboard/dashboard-chart.tsx @@ -1,11 +1,4 @@ -import { - AreaChart, - Area, - XAxis, - YAxis, - CartesianGrid, - Tooltip, -} from "recharts"; +import { AreaChart, Area, XAxis, YAxis, Tooltip } from "recharts"; const data = [ { diff --git a/apps/web/src/app/(dashboard)/dashboard/page.tsx b/apps/web/src/app/(dashboard)/dashboard/page.tsx index df34dd7..30c4290 100644 --- a/apps/web/src/app/(dashboard)/dashboard/page.tsx +++ b/apps/web/src/app/(dashboard)/dashboard/page.tsx @@ -1,30 +1,5 @@ "use client"; -import Link from "next/link"; -import { - Bell, - CircleUser, - Home, - LineChart, - Menu, - Package, - Package2, - Search, - ShoppingCart, - Users, -} from "lucide-react"; -import { Button } from "@unsend/ui/src/button"; - -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@unsend/ui/src/dropdown-menu"; -import { Input } from "@unsend/ui/src/input"; -import { Sheet, SheetContent, SheetTrigger } from "@unsend/ui/src/sheet"; import DashboardChart from "./dashboard-chart"; export default function Dashboard() { diff --git a/apps/web/src/app/(dashboard)/domains/[domainId]/page.tsx b/apps/web/src/app/(dashboard)/domains/[domainId]/page.tsx index 5d43d31..5d322b2 100644 --- a/apps/web/src/app/(dashboard)/domains/[domainId]/page.tsx +++ b/apps/web/src/app/(dashboard)/domains/[domainId]/page.tsx @@ -1,6 +1,5 @@ "use client"; -import type { Metadata } from "next"; import { api } from "~/trpc/react"; import { Domain, DomainStatus } from "@prisma/client"; import { @@ -12,7 +11,6 @@ import { BreadcrumbSeparator, } from "@unsend/ui/src/breadcrumb"; import { DomainStatusBadge } from "../domain-badge"; -import { formatDistanceToNow } from "date-fns"; import { Table, TableBody, @@ -26,7 +24,6 @@ import { CheckIcon, ClipboardCopy } from "lucide-react"; import React from "react"; import { Switch } from "@unsend/ui/src/switch"; import DeleteDomain from "./delete-domain"; -import { DkimStatus } from "@aws-sdk/client-sesv2"; import SendTestMail from "./send-test-mail"; export default function DomainItemPage({ diff --git a/apps/web/src/app/(dashboard)/domains/[domainId]/send-test-mail.tsx b/apps/web/src/app/(dashboard)/domains/[domainId]/send-test-mail.tsx index 4acde30..3d45ac5 100644 --- a/apps/web/src/app/(dashboard)/domains/[domainId]/send-test-mail.tsx +++ b/apps/web/src/app/(dashboard)/domains/[domainId]/send-test-mail.tsx @@ -4,8 +4,6 @@ import { Button } from "@unsend/ui/src/button"; import { Dialog, DialogContent, - DialogDescription, - DialogFooter, DialogHeader, DialogTitle, DialogTrigger, @@ -13,9 +11,8 @@ import { import { api } from "~/trpc/react"; import React, { useState } from "react"; import { Domain } from "@prisma/client"; -import { useRouter } from "next/navigation"; import { toast } from "@unsend/ui/src/toaster"; -import { Send, SendHorizonal } from "lucide-react"; +import { SendHorizonal } from "lucide-react"; import { Code } from "@unsend/ui/src/code"; const jsCode = `const requestOptions = { @@ -112,14 +109,11 @@ if (curl_errno($ch)) { export const SendTestMail: React.FC<{ domain: Domain }> = ({ domain }) => { const [open, setOpen] = useState(false); - const [domainName, setDomainName] = useState(""); const sendTestEmailFromDomainMutation = api.domain.sendTestEmailFromDomain.useMutation(); const utils = api.useUtils(); - const router = useRouter(); - function handleSendTestEmail() { sendTestEmailFromDomainMutation.mutate( { diff --git a/apps/web/src/app/(dashboard)/domains/domain-list.tsx b/apps/web/src/app/(dashboard)/domains/domain-list.tsx index 407654a..7d9fd92 100644 --- a/apps/web/src/app/(dashboard)/domains/domain-list.tsx +++ b/apps/web/src/app/(dashboard)/domains/domain-list.tsx @@ -1,6 +1,6 @@ "use client"; -import { Domain, DomainStatus } from "@prisma/client"; +import { Domain } from "@prisma/client"; import { formatDistanceToNow } from "date-fns"; import Link from "next/link"; import { Switch } from "@unsend/ui/src/switch"; diff --git a/apps/web/src/app/(dashboard)/domains/page.tsx b/apps/web/src/app/(dashboard)/domains/page.tsx index 534cea5..2db5ba5 100644 --- a/apps/web/src/app/(dashboard)/domains/page.tsx +++ b/apps/web/src/app/(dashboard)/domains/page.tsx @@ -1,4 +1,3 @@ -import type { Metadata } from "next"; import DomainsList from "./domain-list"; import AddDomain from "./add-domain"; diff --git a/apps/web/src/app/(dashboard)/emails/email-details.tsx b/apps/web/src/app/(dashboard)/emails/email-details.tsx index 8eb4d06..e852866 100644 --- a/apps/web/src/app/(dashboard)/emails/email-details.tsx +++ b/apps/web/src/app/(dashboard)/emails/email-details.tsx @@ -1,7 +1,5 @@ "use client"; -import { useEffect } from "react"; -import { useRouter } from "next/navigation"; import { api } from "~/trpc/react"; import { Separator } from "@unsend/ui/src/separator"; import { EmailStatusBadge, EmailStatusIcon } from "./email-status-badge"; diff --git a/apps/web/src/app/(dashboard)/emails/email-list.tsx b/apps/web/src/app/(dashboard)/emails/email-list.tsx index a973ebe..f97d1c9 100644 --- a/apps/web/src/app/(dashboard)/emails/email-list.tsx +++ b/apps/web/src/app/(dashboard)/emails/email-list.tsx @@ -1,6 +1,5 @@ "use client"; -import Link from "next/link"; import { Table, TableHeader, @@ -9,7 +8,6 @@ import { TableBody, TableCell, } from "@unsend/ui/src/table"; -import { Badge } from "@unsend/ui/src/badge"; import { api } from "~/trpc/react"; import { Mail, @@ -22,10 +20,7 @@ import { import { formatDistanceToNow } from "date-fns"; import { EmailStatus } from "@prisma/client"; import { EmailStatusBadge } from "./email-status-badge"; -import { useState } from "react"; import EmailDetails from "./email-details"; -import { useRouter } from "next/navigation"; -import { useSearchParams } from "next/navigation"; // Adjust the import based on your project setup import dynamic from "next/dynamic"; import { useUrlState } from "~/hooks/useUrlState"; import { Button } from "@unsend/ui/src/button"; @@ -34,7 +29,6 @@ import { SelectContent, SelectItem, SelectTrigger, - SelectValue, } from "@unsend/ui/src/select"; /* Stupid hydrating error. And I so stupid to understand the stupid NextJS docs. Because they stupid change it everyday */ diff --git a/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx b/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx index 4116ea3..31e0d7f 100644 --- a/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx +++ b/apps/web/src/app/(dashboard)/emails/email-status-badge.tsx @@ -22,6 +22,7 @@ export const EmailStatusBadge: React.FC<{ status: EmailStatus }> = ({ break; case "DELIVERY_DELAYED": badgeColor = "bg-yellow-500/10 text-yellow-600 border-yellow-600/10"; + break; case "COMPLAINED": badgeColor = "bg-yellow-500/10 text-yellow-600 border-yellow-600/10"; break; @@ -64,6 +65,7 @@ export const EmailStatusIcon: React.FC<{ status: EmailStatus }> = ({ case "DELIVERY_DELAYED": outsideColor = "bg-yellow-500/40"; insideColor = "bg-yellow-500"; + break; case "COMPLAINED": outsideColor = "bg-yellow-500/40"; insideColor = "bg-yellow-500"; diff --git a/apps/web/src/app/(dashboard)/emails/page.tsx b/apps/web/src/app/(dashboard)/emails/page.tsx index 6fdcd78..533bfe3 100644 --- a/apps/web/src/app/(dashboard)/emails/page.tsx +++ b/apps/web/src/app/(dashboard)/emails/page.tsx @@ -1,5 +1,3 @@ -import type { Metadata } from "next"; -import { Suspense } from "react"; import dynamic from "next/dynamic"; const EmailList = dynamic( diff --git a/apps/web/src/app/(dashboard)/layout.tsx b/apps/web/src/app/(dashboard)/layout.tsx index 9cf7259..fa89c81 100644 --- a/apps/web/src/app/(dashboard)/layout.tsx +++ b/apps/web/src/app/(dashboard)/layout.tsx @@ -1,14 +1,12 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { - Bell, BellRing, BookUser, CircleUser, Code, Globe, Home, - KeyRound, LayoutDashboard, LineChart, Mail, @@ -16,7 +14,6 @@ import { MessageSquareMore, Package, Package2, - Search, ShoppingCart, Users, Volume2, @@ -31,13 +28,11 @@ import { DropdownMenuSeparator, DropdownMenuTrigger, } from "@unsend/ui/src/dropdown-menu"; -import { Input } from "@unsend/ui/src/input"; import { Sheet, SheetContent, SheetTrigger } from "@unsend/ui/src/sheet"; import { NextAuthProvider } from "~/providers/next-auth"; import { getServerAuthSession } from "~/server/auth"; import Image from "next/image"; -import { useRouter } from "next/navigation"; import { NavButton } from "./nav-button"; export const metadata = { diff --git a/apps/web/src/app/api/auth/[...nextauth]/route.ts b/apps/web/src/app/api/auth/[...nextauth]/route.ts index 7ef8967..6de56e1 100644 --- a/apps/web/src/app/api/auth/[...nextauth]/route.ts +++ b/apps/web/src/app/api/auth/[...nextauth]/route.ts @@ -2,6 +2,5 @@ import NextAuth from "next-auth"; import { authOptions } from "~/server/auth"; -// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const handler = NextAuth(authOptions); export { handler as GET, handler as POST }; diff --git a/apps/web/src/app/api/ses_callback/route.ts b/apps/web/src/app/api/ses_callback/route.ts index fda5ed9..29cc84a 100644 --- a/apps/web/src/app/api/ses_callback/route.ts +++ b/apps/web/src/app/api/ses_callback/route.ts @@ -32,7 +32,7 @@ export async function POST(req: Request) { } async function handleSubscription(message: any) { - const subResponse = await fetch(message.SubscribeURL, { + await fetch(message.SubscribeURL, { method: "GET", }); diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 899a712..63d8ad1 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -1,7 +1,6 @@ import Link from "next/link"; import { getServerAuthSession } from "~/server/auth"; -import { api } from "~/trpc/server"; import { Button } from "@unsend/ui/src/button"; import { SendHorizonal } from "lucide-react"; diff --git a/apps/web/src/server/api/routers/api.ts b/apps/web/src/server/api/routers/api.ts index 27245e9..68c439c 100644 --- a/apps/web/src/server/api/routers/api.ts +++ b/apps/web/src/server/api/routers/api.ts @@ -1,14 +1,7 @@ import { z } from "zod"; -import { - createTRPCRouter, - protectedProcedure, - publicProcedure, - teamProcedure, -} from "~/server/api/trpc"; -import { db } from "~/server/db"; +import { createTRPCRouter, teamProcedure } from "~/server/api/trpc"; import { addApiKey } from "~/server/service/api-service"; -import { createDomain, getDomain } from "~/server/service/domain-service"; export const apiRouter = createTRPCRouter({ createToken: teamProcedure diff --git a/apps/web/src/server/api/routers/domain.ts b/apps/web/src/server/api/routers/domain.ts index 81c9a7c..19ed08f 100644 --- a/apps/web/src/server/api/routers/domain.ts +++ b/apps/web/src/server/api/routers/domain.ts @@ -1,11 +1,6 @@ import { z } from "zod"; -import { - createTRPCRouter, - protectedProcedure, - publicProcedure, - teamProcedure, -} from "~/server/api/trpc"; +import { createTRPCRouter, teamProcedure } from "~/server/api/trpc"; import { db } from "~/server/db"; import { createDomain, @@ -37,7 +32,7 @@ export const domainRouter = createTRPCRouter({ getDomain: teamProcedure .input(z.object({ id: z.number() })) - .query(async ({ ctx, input }) => { + .query(async ({ input }) => { return getDomain(input.id); }), @@ -49,7 +44,7 @@ export const domainRouter = createTRPCRouter({ openTracking: z.boolean().optional(), }) ) - .mutation(async ({ ctx, input }) => { + .mutation(async ({ input }) => { return updateDomain(input.id, { clickTracking: input.clickTracking, openTracking: input.openTracking, @@ -58,7 +53,7 @@ export const domainRouter = createTRPCRouter({ deleteDomain: teamProcedure .input(z.object({ id: z.number() })) - .mutation(async ({ ctx, input }) => { + .mutation(async ({ input }) => { await deleteDomain(input.id); return { success: true }; }), diff --git a/apps/web/src/server/api/routers/email.ts b/apps/web/src/server/api/routers/email.ts index ad462d8..b214334 100644 --- a/apps/web/src/server/api/routers/email.ts +++ b/apps/web/src/server/api/routers/email.ts @@ -53,7 +53,7 @@ export const emailRouter = createTRPCRouter({ getEmail: teamProcedure .input(z.object({ id: z.string() })) - .query(async ({ ctx, input }) => { + .query(async ({ input }) => { const email = await db.email.findUnique({ where: { id: input.id, diff --git a/apps/web/src/server/api/trpc.ts b/apps/web/src/server/api/trpc.ts index 43054b8..8c678de 100644 --- a/apps/web/src/server/api/trpc.ts +++ b/apps/web/src/server/api/trpc.ts @@ -9,7 +9,7 @@ import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; -import { z, ZodError } from "zod"; +import { ZodError } from "zod"; import { getServerAuthSession } from "~/server/auth"; import { db } from "~/server/db"; @@ -107,20 +107,18 @@ export const protectedProcedure = t.procedure.use(({ ctx, next }) => { }); }); -export const teamProcedure = protectedProcedure.use( - async ({ ctx, next, input }) => { - const teamUser = await db.teamUser.findFirst({ - where: { userId: ctx.session.user.id }, - include: { team: true }, - }); - if (!teamUser) { - throw new TRPCError({ code: "NOT_FOUND", message: "Team not found" }); - } - return next({ - ctx: { - team: teamUser.team, - session: { ...ctx.session, user: ctx.session.user }, - }, - }); +export const teamProcedure = protectedProcedure.use(async ({ ctx, next }) => { + const teamUser = await db.teamUser.findFirst({ + where: { userId: ctx.session.user.id }, + include: { team: true }, + }); + if (!teamUser) { + throw new TRPCError({ code: "NOT_FOUND", message: "Team not found" }); } -); + return next({ + ctx: { + team: teamUser.team, + session: { ...ctx.session, user: ctx.session.user }, + }, + }); +}); diff --git a/apps/web/src/server/auth.ts b/apps/web/src/server/auth.ts index 6acc15d..2d7826a 100644 --- a/apps/web/src/server/auth.ts +++ b/apps/web/src/server/auth.ts @@ -17,6 +17,7 @@ import { db } from "~/server/db"; * @see https://next-auth.js.org/getting-started/typescript#module-augmentation */ declare module "next-auth" { + // eslint-disable-next-line no-unused-vars interface Session extends DefaultSession { user: { id: number; @@ -25,6 +26,7 @@ declare module "next-auth" { } & DefaultSession["user"]; } + // eslint-disable-next-line no-unused-vars interface User { id: number; } diff --git a/apps/web/src/server/aws/ses.ts b/apps/web/src/server/aws/ses.ts index d6efcc1..9f76d2a 100644 --- a/apps/web/src/server/aws/ses.ts +++ b/apps/web/src/server/aws/ses.ts @@ -159,6 +159,7 @@ export async function sendEmailWithAttachments({ to, from, subject, + // eslint-disable-next-line no-unused-vars text, html, attachments, diff --git a/apps/web/src/server/aws/setup.ts b/apps/web/src/server/aws/setup.ts index 7044d33..dea9de3 100644 --- a/apps/web/src/server/aws/setup.ts +++ b/apps/web/src/server/aws/setup.ts @@ -1,5 +1,3 @@ -import { JsonValue } from "@prisma/client/runtime/library"; -import { db } from "../db"; import { APP_SETTINGS } from "~/utils/constants"; import { createTopic, subscribeEndpoint } from "./sns"; import { env } from "~/env"; diff --git a/apps/web/src/server/db.ts b/apps/web/src/server/db.ts index 07dc027..497c541 100644 --- a/apps/web/src/server/db.ts +++ b/apps/web/src/server/db.ts @@ -8,6 +8,7 @@ const createPrismaClient = () => env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"], }); +// eslint-disable-next-line no-undef const globalForPrisma = globalThis as unknown as { prisma: ReturnType | undefined; }; diff --git a/apps/web/src/server/public-api/api/send_email.ts b/apps/web/src/server/public-api/api/send_email.ts index 0ded2da..0a735ca 100644 --- a/apps/web/src/server/public-api/api/send_email.ts +++ b/apps/web/src/server/public-api/api/send_email.ts @@ -1,7 +1,5 @@ import { createRoute, z } from "@hono/zod-openapi"; -import { DomainSchema } from "~/lib/zod/domain-schema"; import { PublicAPIApp } from "../hono"; -import { db } from "../../db"; import { getTeamFromToken } from "../auth"; import { sendEmail } from "~/server/service/email-service"; diff --git a/apps/web/src/server/public-api/auth.ts b/apps/web/src/server/public-api/auth.ts index 57edf6f..8d8951a 100644 --- a/apps/web/src/server/public-api/auth.ts +++ b/apps/web/src/server/public-api/auth.ts @@ -1,5 +1,4 @@ import { Context } from "hono"; -import { bearerAuth } from "hono/bearer-auth"; import { hashToken } from "../auth"; import { db } from "../db"; diff --git a/apps/web/src/server/service/ses-hook-parser.ts b/apps/web/src/server/service/ses-hook-parser.ts index 316605e..42eb4aa 100644 --- a/apps/web/src/server/service/ses-hook-parser.ts +++ b/apps/web/src/server/service/ses-hook-parser.ts @@ -1,5 +1,5 @@ import { EmailStatus } from "@prisma/client"; -import { SesEvent, SesEventDataKey, SesEventType } from "~/types/aws-types"; +import { SesEvent, SesEventDataKey } from "~/types/aws-types"; import { db } from "../db"; export async function parseSesHook(data: SesEvent) { diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 88a706a..4c89fa0 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -3,9 +3,7 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "~/*": [ - "./src/*" - ] + "~/*": ["./src/*"] }, "plugins": [ { @@ -20,9 +18,8 @@ "**/*.tsx", "**/*.cjs", "**/*.js", - ".next/types/**/*.ts" + ".next/types/**/*.ts", + ".eslintrc.cjs" ], - "exclude": [ - "node_modules" - ] + "exclude": ["node_modules"] } diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index a3d5208..18543e4 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -8,12 +8,13 @@ "react-internal.js" ], "devDependencies": { - "@vercel/style-guide": "^5.2.0", - "eslint-config-turbo": "^1.12.4", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-only-warn": "^1.1.0", - "@typescript-eslint/parser": "^7.1.0", + "@next/eslint-plugin-next": "^14.2.2", "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "@vercel/style-guide": "^5.2.0", + "eslint-config-prettier": "^9.1.0", + "eslint-config-turbo": "^1.12.4", + "eslint-plugin-only-warn": "^1.1.0", "typescript": "^5.3.3" } } \ No newline at end of file diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js index f56c924..a7575a9 100644 --- a/packages/eslint-config/react-internal.js +++ b/packages/eslint-config/react-internal.js @@ -40,4 +40,7 @@ module.exports = { // Force ESLint to detect .tsx files { files: ["*.js?(x)", "*.ts?(x)"] }, ], + rules: { + "no-redeclare": "off", + }, }; diff --git a/packages/ui/.eslintrc.js b/packages/ui/.eslintrc.cjs similarity index 100% rename from packages/ui/.eslintrc.js rename to packages/ui/.eslintrc.cjs diff --git a/packages/ui/package.json b/packages/ui/package.json index 5ce22ba..7f860cb 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -8,7 +8,8 @@ "src" ], "scripts": { - "lint": "eslint . --max-warnings 0" + "lint": "eslint . --max-warnings 0", + "lint:fix": "eslint . --fix" }, "devDependencies": { "@types/eslint": "^8.56.5", diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 9b70044..7b27cef 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -3,6 +3,6 @@ "compilerOptions": { "outDir": "dist" }, - "include": ["src", "index.ts"], + "include": ["**/*.tsx", "**/*.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/ui/tsconfig.lint.json b/packages/ui/tsconfig.lint.json index 7c5679b..44b1bfa 100644 --- a/packages/ui/tsconfig.lint.json +++ b/packages/ui/tsconfig.lint.json @@ -3,6 +3,6 @@ "compilerOptions": { "outDir": "dist" }, - "include": ["src", "turbo"], + "include": ["src", "turbo", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules", "dist"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 259f2f6..76d123f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -179,6 +179,9 @@ importers: specifier: ^3.22.4 version: 3.22.4 devDependencies: + '@next/eslint-plugin-next': + specifier: ^14.2.2 + version: 14.2.2 '@types/eslint': specifier: ^8.56.2 version: 8.56.5 @@ -233,6 +236,9 @@ importers: packages/eslint-config: devDependencies: + '@next/eslint-plugin-next': + specifier: ^14.2.2 + version: 14.2.2 '@typescript-eslint/eslint-plugin': specifier: ^7.1.0 version: 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.2) @@ -241,7 +247,7 @@ importers: version: 7.2.0(eslint@8.57.0)(typescript@5.4.2) '@vercel/style-guide': specifier: ^5.2.0 - version: 5.2.0(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.2) + version: 5.2.0(@next/eslint-plugin-next@14.2.2)(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.2) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -1634,6 +1640,12 @@ packages: glob: 10.3.10 dev: true + /@next/eslint-plugin-next@14.2.2: + resolution: {integrity: sha512-q+Ec2648JtBpKiu/FSJm8HAsFXlNvioHeBCbTP12T1SGcHYwhqHULSfQgFkPgHDu3kzNp2Kem4J54bK4rPQ5SQ==} + dependencies: + glob: 10.3.10 + dev: true + /@next/swc-darwin-arm64@14.1.4: resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} engines: {node: '>= 10'} @@ -3494,7 +3506,7 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vercel/style-guide@5.2.0(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.2): + /@vercel/style-guide@5.2.0(@next/eslint-plugin-next@14.2.2)(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.2): resolution: {integrity: sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g==} engines: {node: '>=16'} peerDependencies: @@ -3514,6 +3526,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/eslint-parser': 7.23.10(@babel/core@7.24.0)(eslint@8.57.0) + '@next/eslint-plugin-next': 14.2.2 '@rushstack/eslint-patch': 1.7.2 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) @@ -4470,7 +4483,7 @@ packages: enhanced-resolve: 5.16.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 is-core-module: 2.13.1 diff --git a/turbo.json b/turbo.json index bd3edba..d38667f 100644 --- a/turbo.json +++ b/turbo.json @@ -25,7 +25,12 @@ "AWS_ACCESS_KEY", "APP_URL", "SNS_TOPIC", - "NEXTAUTH_SECRET" + "NEXTAUTH_SECRET", + "NODE_ENV", + "VERCEL_URL", + "VERCEL", + "SKIP_ENV_VALIDATION", + "PORT" ] }, "lint": {