Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 3x 4x 7x | import {
createTRPCClient,
unstable_localLink as localLink,
} from "@trpc/client";
import type { AnyRouter } from "@trpc/server/unstable-core-do-not-import";
import * as crypto from "node:crypto";
import { doNothing } from "remeda";
import { v4 } from "uuid";
import type { AppRouter } from "~app/trpc";
import { getDatabase } from "~db/database";
import { transformer } from "~utils/transformer";
import type { UnauthorizedContext } from "~web/handlers/context";
import { baseLogger } from "~web/providers/logger";
import { env } from "~web/utils/env";
/* c8 ignore start */
export const createServerContext = (req: Request): UnauthorizedContext => {
const active = env.EMAIL_SERVICE_ACTIVE;
if (active && !env.BASE_URL) {
throw new Error(
"Expected to have env variable BASE_URL while creating context with active email",
);
}
return {
logger: baseLogger,
database: getDatabase({
logger: req.headers.get("x-debug")
? baseLogger.child({ url: req.url || "unknown" })
: undefined,
connectionString: env.DATABASE_URL,
sharedKey: "tRPC",
}),
emailOptions: {
getActive: () => active,
setActive: () => {
doNothing();
},
},
baseUrl: env.BASE_URL || "http://example.com/",
cacheDbOptions: {},
exchangeRateOptions: {},
s3Options: {},
getSalt: () => crypto.randomBytes(64).toString("hex"),
getUuid: () => v4(),
reqHeaders: req.headers,
resHeaders: new Headers(),
};
};
/* c8 ignore stop */
export const getServerTrpcClient = <R extends AnyRouter = AppRouter>(
router: R,
req: Request,
) =>
createTRPCClient<R>({
links: [
localLink({
router,
transformer,
createContext: () => Promise.resolve(createServerContext(req)),
}),
],
});
|