import { EditingRenderMiddleware } from "@sitecore-jss/sitecore-jss-nextjs/editing"; /** * This Next.js API route is used to handle POST requests from Sitecore editors. * This route should match the `serverSideRenderingEngineEndpointUrl` in your Sitecore configuration, * which is set to "http://localhost:3000/api/editing/render" by default (see \sitecore\config\xmcloud-nextjs-starter.config). * * The `EditingRenderMiddleware` will * 1. Extract editing data from the Sitecore editor POST request * 2. Stash this data (for later use in the page render request) via an `EditingDataService`, which returns a key for retrieval * 3. Enable Next.js Preview Mode, passing our stashed editing data key as preview data * 4. Invoke the actual page render request, passing along the Preview Mode cookies. * This allows retrieval of the editing data in preview context (via an `EditingDataService`) - see `SitecorePagePropsFactory` * 5. Return the rendered page HTML to the Sitecore editor */ // Bump body size limit (1mb by default) and disable response limit for Sitecore editor payloads // See https://nextjs.org/docs/api-routes/request-helpers#custom-config export const config = { api: { bodyParser: { sizeLimit: "2mb", }, responseLimit: false, }, }; // Wire up the EditingRenderMiddleware handler const handler = new EditingRenderMiddleware().getHandler(); export default handler;