18 lines · 694 B
import { createCsrfMiddleware, createStart } from "@tanstack/react-start";
import { httpErrorAdapter } from "~/lib/http-error-adapter";
import { paymentErrorMiddleware } from "~/fns/middleware";

/**
 * The worker-level gate in server.ts only checks unsafe methods; this also covers GET server functions,
 * so a cross-site page can't trigger one with the viewer's cookie even if it has side effects.
 */
const csrfMiddleware = createCsrfMiddleware({
  filter: (ctx) => ctx.handlerType === "serverFn",
});

export const startInstance = createStart(() => ({
  requestMiddleware: [csrfMiddleware],
  serializationAdapters: [httpErrorAdapter],
  functionMiddleware: [paymentErrorMiddleware],
}));