Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
2.6 kB ยท 83 lines
TSX
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384import "server-only";import type { AppRouter } from "@openstatus/api";import { HydrationBoundary } from "@tanstack/react-query";import { dehydrate } from "@tanstack/react-query";import { createTRPCClient } from "@trpc/client";import { type TRPCQueryOptions, createTRPCOptionsProxy,} from "@trpc/tanstack-react-query";import { cookies } from "next/headers";import { cache } from "react";
import { makeQueryClient } from "./query-client";import { endingLink, sentryLoggerLink } from "./shared";
// IMPORTANT: Create a stable getter for the query client that// will return the same client during the same request.export const getQueryClient = cache(makeQueryClient);
export const trpc = createTRPCOptionsProxy<AppRouter>({ queryClient: getQueryClient, client: createTRPCClient({ links: [ sentryLoggerLink(), endingLink({ headers: { "x-trpc-source": "server", }, fetch: async (url, options) => { const cookieStore = await cookies(); return fetch(url, { ...options, credentials: "include", headers: { ...options?.headers, cookie: cookieStore.toString(), }, }); }, }), ], }),});
export function HydrateClient(props: { children: React.ReactNode }) { const queryClient = getQueryClient();
return ( <HydrationBoundary state={dehydrate(queryClient)}> {props.children} </HydrationBoundary> );}
// oxlint-disable-next-line typescript/no-explicit-any -- FIXME: remove anyexport function prefetch<T extends ReturnType<TRPCQueryOptions<any>>>( queryOptions: T,) { const queryClient = getQueryClient();
if (queryOptions.queryKey[1]?.type === "infinite") { // oxlint-disable-next-line typescript/no-explicit-any -- FIXME: remove any void queryClient.prefetchInfiniteQuery(queryOptions as any); } else { void queryClient.prefetchQuery(queryOptions); }}
// oxlint-disable-next-line typescript/no-explicit-any -- FIXME: remove anyexport function batchPrefetch<T extends ReturnType<TRPCQueryOptions<any>>>( queryOptionsArray: T[],) { const queryClient = getQueryClient();
for (const queryOptions of queryOptionsArray) { if (queryOptions.queryKey[1]?.type === "infinite") { // oxlint-disable-next-line typescript/no-explicit-any -- FIXME: remove any void queryClient.prefetchInfiniteQuery(queryOptions as any); } else { void queryClient.prefetchQuery(queryOptions); } }}