From 850b0fa87699df3262a3c089faa6c8485e59569f Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 24 Apr 2024 22:11:53 +0100 Subject: [PATCH] feat: switch TRPC to edge --- bun.lockb | Bin 350813 -> 351542 bytes package.json | 2 ++ src/pages/api/auth/confirm.ts | 8 +++++-- src/pages/api/trpc/[trpc].ts | 40 ++++++++++++++++----------------- src/server/api/routers/auth.ts | 2 +- src/server/api/trpc.ts | 11 +++++---- src/utils/supabase/api.ts | 34 +++++++++++++++++++++++----- 7 files changed, 65 insertions(+), 32 deletions(-) diff --git a/bun.lockb b/bun.lockb index b59b19af9146602ec31eaceff9c1230062040949..d40f0a93e03ba3d889a83c9e3cb62c840e5fee47 100755 GIT binary patch delta 72410 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 C{|4j$ delta 71945 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 GRQ*3=S*OPU diff --git a/package.json b/package.json index d7c3b5cb..a5530c15 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "src/email" ], "dependencies": { + "@edge-runtime/cookies": "^4.1.1", "@headlessui/react": "^1.7.17", "@react-email/render": "^0.0.10", "@supabase/ssr": "^0.3.0", @@ -43,6 +44,7 @@ "zod": "^3.22.4" }, "devDependencies": { + "@types/cookie": "^0.6.0", "@types/eslint": "^8.56.2", "@types/node": "^20.11.20", "@types/react": "^18.2.57", diff --git a/src/pages/api/auth/confirm.ts b/src/pages/api/auth/confirm.ts index f0a7f5f6..3ec7f62a 100644 --- a/src/pages/api/auth/confirm.ts +++ b/src/pages/api/auth/confirm.ts @@ -1,7 +1,7 @@ import { type EmailOtpType } from "@supabase/supabase-js"; import type { NextApiRequest, NextApiResponse } from "next"; -import createClient from "~/utils/supabase/api"; +import { createNextClient } from "~/utils/supabase/api"; function stringOrFirstString(item: string | string[] | undefined) { return Array.isArray(item) ? item[0] : item; @@ -23,7 +23,7 @@ export default async function handler( let next = "/error"; if (token_hash && type) { - const supabase = createClient(req, res); + const supabase = createNextClient(req, res); const { error } = await supabase.auth.verifyOtp({ type: type as EmailOtpType, token_hash, @@ -37,3 +37,7 @@ export default async function handler( res.redirect(next); } + +// export const runtime = "edge"; +// export const preferredRegion = "lhr1"; +// export const dynamic = "force-dynamic"; diff --git a/src/pages/api/trpc/[trpc].ts b/src/pages/api/trpc/[trpc].ts index 7fc33a39..99293098 100644 --- a/src/pages/api/trpc/[trpc].ts +++ b/src/pages/api/trpc/[trpc].ts @@ -1,27 +1,27 @@ -import { type NextApiRequest, type NextApiResponse } from "next"; -import { createNextApiHandler } from "@trpc/server/adapters/next"; +import { type NextRequest } from "next/server"; +import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; import { env } from "~/env.mjs"; import { appRouter } from "~/server/api/root"; import { createTRPCContext } from "~/server/api/trpc"; -const nextApiHandler = createNextApiHandler({ - router: appRouter, - createContext: createTRPCContext, - onError: - env.NODE_ENV === "development" - ? ({ path, error }) => { - console.error( - `❌ tRPC failed on ${path ?? ""}: ${error.message}`, - ); - } - : undefined, -}); - -export default function handler(req: NextApiRequest, res: NextApiResponse) { - return nextApiHandler(req, res); +export default async function handler(req: NextRequest) { + return fetchRequestHandler({ + endpoint: "/api/trpc", + router: appRouter, + req, + createContext: createTRPCContext, + onError: + env.NODE_ENV === "development" + ? ({ path, error }) => { + console.error( + `❌ tRPC failed on ${path ?? ""}: ${error.message}`, + ); + } + : undefined, + }); } -// export const runtime = "edge"; -// export const preferredRegion = 'lhr1'; -// export const dynamic = 'force-dynamic' +export const runtime = "edge"; +export const preferredRegion = "lhr1"; +export const dynamic = "force-dynamic"; diff --git a/src/server/api/routers/auth.ts b/src/server/api/routers/auth.ts index 91eea7c2..aa87efb7 100644 --- a/src/server/api/routers/auth.ts +++ b/src/server/api/routers/auth.ts @@ -9,7 +9,7 @@ export const authRouter = createTRPCRouter({ const { data } = await ctx.db.auth.signInWithOtp({ email: input.email, options: { - emailRedirectTo: "/boards", + emailRedirectTo: `${process.env.WEBSITE_URL}/boards`, }, }); diff --git a/src/server/api/trpc.ts b/src/server/api/trpc.ts index 633ba5bb..ad1f8701 100644 --- a/src/server/api/trpc.ts +++ b/src/server/api/trpc.ts @@ -7,11 +7,11 @@ * need to use are documented accordingly near the end. */ import { initTRPC, TRPCError } from "@trpc/server"; -import { type CreateNextContextOptions } from "@trpc/server/adapters/next"; +import { type FetchCreateContextFnOptions } from "@trpc/server/adapters/fetch"; import superjson from "superjson"; import { ZodError } from "zod"; -import createClient from "~/utils/supabase/api"; +import { createTRPCClient } from "~/utils/supabase/api"; import { type Database } from "~/types/database.types"; import { type SupabaseClient } from "@supabase/supabase-js"; @@ -56,8 +56,11 @@ export const createInnerTRPCContext = (opts: CreateContextOptions) => { * * @see https://trpc.io/docs/context */ -export const createTRPCContext = async (_opts: CreateNextContextOptions) => { - const db = createClient(_opts.req, _opts.res); +export const createTRPCContext = async ({ + req, + resHeaders, +}: FetchCreateContextFnOptions) => { + const db = createTRPCClient(req, resHeaders); const { data: { user }, diff --git a/src/utils/supabase/api.ts b/src/utils/supabase/api.ts index 91b9e9fe..89f60fc3 100644 --- a/src/utils/supabase/api.ts +++ b/src/utils/supabase/api.ts @@ -3,13 +3,12 @@ import { type CookieOptions, serialize, } from "@supabase/ssr"; -import { type NextApiRequest, type NextApiResponse } from "next"; +import { RequestCookies } from "@edge-runtime/cookies"; import { type Database } from "~/types/database.types"; -export default function createClient( - req: NextApiRequest, - res: NextApiResponse, -) { +import { type NextApiRequest, type NextApiResponse } from "next"; + +export function createNextClient(req: NextApiRequest, res: NextApiResponse) { const supabase = createServerClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, @@ -32,3 +31,28 @@ export default function createClient( return supabase; } + +export function createTRPCClient(req: Request, resHeaders: Headers) { + const supabase = createServerClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, + { + cookies: { + get(name: string) { + const cookies = new RequestCookies(req.headers); + return cookies.get(name)?.value; + }, + set(name: string, value: string, options: CookieOptions) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + resHeaders.set("Set-Cookie", serialize(name, value, options)); + }, + remove(name: string, options: CookieOptions) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + resHeaders.set("Set-Cookie", serialize(name, "", options)); + }, + }, + }, + ); + + return supabase; +}