import "server-only" import ContentstackLivePreview from "@contentstack/live-preview-utils" import { request as graphqlRequest } from "graphql-request" import { env } from "@/env/server" import type { DocumentNode } from "graphql" import type { Data } from "@/types/request" export async function previewRequest( query: string | DocumentNode, variables?: {} ): Promise> { try { const hash = ContentstackLivePreview.hash if (!hash) { throw new Error("No hash received") } const headers = new Headers({ access_token: env.CMS_ACCESS_TOKEN, preview_token: env.CMS_PREVIEW_TOKEN, live_preview: hash, }) const response = await graphqlRequest({ document: query, requestHeaders: headers, url: env.CMS_PREVIEW_URL, variables, }) return { data: response } } catch (error) { console.error(error) throw new Error("Something went wrong") } }