import { headers } from "next/headers" import { Lang } from "@/constants/languages" import { auth } from "@/auth" type CreateContextOptions = { auth: typeof auth lang: Lang pathname: string uid?: string | null url: string } /** Use this helper for: * - testing, where we dont have to Mock Next.js' req/res * - trpc's `createSSGHelpers` where we don't have req/res **/ export function createContextInner(opts: CreateContextOptions) { return { auth: opts.auth, lang: opts.lang, pathname: opts.pathname, uid: opts.uid, url: opts.url, } } /** * This is the actual context you'll use in your router * @link https://trpc.io/docs/context **/ export function createContext() { const h = headers() return createContextInner({ auth, lang: h.get("x-lang") as Lang, pathname: h.get("x-pathname")!, uid: h.get("x-uid"), url: h.get("x-url")!, }) } export type Context = ReturnType