Files
calendar/apps/web/app/_trpc/context.ts
Benny JooandGitHub 920574de65 perf: cache TRPC queries in /event-types RSC (#21381)
* improve trpc funcs

* cache /event-types

* remove unused code

* add comments

* add keys

* improve typing
2025-05-19 18:23:06 +00:00

23 lines
1.1 KiB
TypeScript

import type { ReadonlyHeaders, ReadonlyRequestCookies } from "app/_types";
import { cookies, headers } from "next/headers";
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { createContext } from "@calcom/trpc/server/createContext";
import { createCallerFactory } from "@calcom/trpc/server/trpc";
import type { TRPCContext } from "@calcom/trpc/types/server/createContext";
import { buildLegacyRequest } from "@lib/buildLegacyCtx";
import type { AnyRouter } from "@trpc/server";
export const getTRPCContext = async (_headers?: ReadonlyHeaders, _cookies?: ReadonlyRequestCookies) => {
const legacyReq = buildLegacyRequest(_headers ?? (await headers()), _cookies ?? (await cookies()));
return await createContext({ req: legacyReq, res: {} as any }, getServerSession);
};
export async function createRouterCaller<TRouter extends AnyRouter>(router: TRouter, context?: TRPCContext) {
const trpcContext = context ? context : await getTRPCContext();
const createCaller = createCallerFactory<TRouter>(router);
return createCaller(trpcContext);
}