Fix eslint

This commit is contained in:
KMKoushik
2024-04-22 12:46:53 +10:00
parent ae249df47d
commit 493e9fb63a
40 changed files with 72 additions and 133 deletions

1
.npmrc
View File

@@ -1 +0,0 @@
public-hoist-pattern[]=*prisma*

View File

@@ -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() {
<motion.a
className="bg-white text-black py-2 px-6 rounded-full cursor-pointer flex gap-2"
whileHover={{ scale: 1.2 }}
onHoverStart={(e) => {}}
onHoverEnd={(e) => {}}
transition={{ type: "spring", stiffness: 400, damping: 10 }}
href="https://app.youform.io/forms/caja89vr"
target="_blank"
@@ -141,8 +137,6 @@ email.send({
<motion.a
className="bg-white text-black py-2 px-6 rounded-full cursor-pointer flex gap-2"
whileHover={{ scale: 1.2 }}
onHoverStart={(e) => {}}
onHoverEnd={(e) => {}}
transition={{ type: "spring", stiffness: 400, damping: 10 }}
href="https://app.youform.io/forms/caja89vr"
target="_blank"

View File

@@ -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",

View File

@@ -6,7 +6,6 @@ import { Label } from "@unsend/ui/src/label";
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,

View File

@@ -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() {

View File

@@ -1,4 +1,3 @@
import type { Metadata } from "next";
import ApiList from "./api-list";
import AddApiKey from "./add-api-key";

View File

@@ -1,11 +1,4 @@
import {
AreaChart,
Area,
XAxis,
YAxis,
CartesianGrid,
Tooltip,
} from "recharts";
import { AreaChart, Area, XAxis, YAxis, Tooltip } from "recharts";
const data = [
{

View File

@@ -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() {

View File

@@ -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({

View File

@@ -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(
{

View File

@@ -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";

View File

@@ -1,4 +1,3 @@
import type { Metadata } from "next";
import DomainsList from "./domain-list";
import AddDomain from "./add-domain";

View File

@@ -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";

View File

@@ -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 */

View File

@@ -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";

View File

@@ -1,5 +1,3 @@
import type { Metadata } from "next";
import { Suspense } from "react";
import dynamic from "next/dynamic";
const EmailList = dynamic(

View File

@@ -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 = {

View File

@@ -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 };

View File

@@ -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",
});

View File

@@ -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";

View File

@@ -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

View File

@@ -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 };
}),

View File

@@ -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,

View File

@@ -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,8 +107,7 @@ export const protectedProcedure = t.procedure.use(({ ctx, next }) => {
});
});
export const teamProcedure = protectedProcedure.use(
async ({ ctx, next, input }) => {
export const teamProcedure = protectedProcedure.use(async ({ ctx, next }) => {
const teamUser = await db.teamUser.findFirst({
where: { userId: ctx.session.user.id },
include: { team: true },
@@ -122,5 +121,4 @@ export const teamProcedure = protectedProcedure.use(
session: { ...ctx.session, user: ctx.session.user },
},
});
}
);
});

View File

@@ -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;
}

View File

@@ -159,6 +159,7 @@ export async function sendEmailWithAttachments({
to,
from,
subject,
// eslint-disable-next-line no-unused-vars
text,
html,
attachments,

View File

@@ -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";

View File

@@ -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<typeof createPrismaClient> | undefined;
};

View File

@@ -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";

View File

@@ -1,5 +1,4 @@
import { Context } from "hono";
import { bearerAuth } from "hono/bearer-auth";
import { hashToken } from "../auth";
import { db } from "../db";

View File

@@ -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) {

View File

@@ -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"]
}

View File

@@ -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"
}
}

View File

@@ -40,4 +40,7 @@ module.exports = {
// Force ESLint to detect .tsx files
{ files: ["*.js?(x)", "*.ts?(x)"] },
],
rules: {
"no-redeclare": "off",
},
};

View File

@@ -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",

View File

@@ -3,6 +3,6 @@
"compilerOptions": {
"outDir": "dist"
},
"include": ["src", "index.ts"],
"include": ["**/*.tsx", "**/*.ts"],
"exclude": ["node_modules", "dist"]
}

View File

@@ -3,6 +3,6 @@
"compilerOptions": {
"outDir": "dist"
},
"include": ["src", "turbo"],
"include": ["src", "turbo", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules", "dist"]
}

19
pnpm-lock.yaml generated
View File

@@ -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

View File

@@ -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": {