UNPKG

@preprio/prepr-nextjs

Version:

Next.js package for Prepr CMS preview functionality with advanced debugging and visual editing capabilities

7 lines 4.5 kB
'use strict';var functions=require('@vercel/functions'),server=require('next/server');var m=(r,s,t)=>new Promise((e,i)=>{var p=n=>{try{d(t.next(n));}catch(c){i(c);}},l=n=>{try{d(t.throw(n));}catch(c){i(c);}},d=n=>n.done?e(n.value):Promise.resolve(n.value).then(p,l);d((t=t.apply(r,s)).next());});var S="2.0.1";var y={version:S};function _(r,s,t){var x,f,h,v;let e,i;s&&"headers"in s?(e=s,i=t):(e=server.NextResponse.next(),i=s),process.env.PREPR_GRAPHQL_URL||console.error("PREPR_GRAPHQL_URL is not set"),r.nextUrl.searchParams.forEach((o,u)=>{switch(u){case "utm_source":e.headers.set("Prepr-Context-utm_source",o);break;case "utm_medium":e.headers.set("Prepr-Context-utm_medium",o);break;case "utm_term":e.headers.set("Prepr-Context-utm_term",o);break;case "utm_content":e.headers.set("Prepr-Context-utm_content",o);break;case "utm_campaign":e.headers.set("Prepr-Context-utm_campaign",o);break}});let p=r.headers.get("referer");p&&e.headers.set("Prepr-Context-initial_referral",p),e.headers.set("Prepr-Package",S);let l=functions.ipAddress(r);l&&e.headers.set("Prepr-Visitor-IP",l);let d=(x=r.cookies.get("hubspotutk"))==null?void 0:x.value;d&&e.headers.set("Prepr-Hubspot-Id",d);let n=(f=r.cookies.get("__prepr_uid"))==null?void 0:f.value;if(n||(n=crypto.randomUUID(),e.cookies.set("__prepr_uid",n,{maxAge:1*365*24*60}),e.headers.set("Prepr-Customer-Id-Created","true")),e.headers.set("Prepr-Customer-Id",n),!(i!=null&&i.preview)||process.env.PREPR_ENV!=="preview")return e;e.headers.set("Prepr-Preview-Bar","true");let c=(h=r.cookies.get("Prepr-Segments"))==null?void 0:h.value;c&&e.headers.set("Prepr-Segments",c);let P=(v=r.cookies.get("Prepr-ABtesting"))==null?void 0:v.value;return P&&e.headers.set("Prepr-ABtesting",P),r.nextUrl.searchParams.forEach((o,u)=>{u==="prepr_preview_ab"&&(e.headers.set("Prepr-ABtesting",o),e.cookies.set("Prepr-ABtesting",o)),u==="prepr_preview_segment"&&(e.headers.set("Prepr-Segments",o),e.cookies.set("Prepr-Segments",o));}),e}var a=class extends Error{constructor(t,e,i,p){super(t);this.code=e;this.context=i;this.originalError=p;this.name="PreprError";}};function g(r,s){if("req"in r&&r.req){let e=r.req.headers[s.toLowerCase()];return typeof e=="string"?e:(e==null?void 0:e[0])||null}return null}function O(r){return g(r,"prepr-customer-id")}function j(r){return g(r,"Prepr-Segments")}function b(r){return g(r,"Prepr-ABtesting")}function V(r){let s={};if("req"in r&&r.req){let t=r.req.headers;Object.entries(t).forEach(([e,i])=>{e.toLowerCase().startsWith("prepr")&&(s[e]=typeof i=="string"?i:(i==null?void 0:i[0])||"");});}return s}function k(r){return r?r.startsWith("https://")?{valid:true}:{valid:false,error:"Token must be a valid HTTPS URL"}:{valid:false,error:"Token is required"}}function E(){return process.env.PREPR_ENV==="preview"}function D(r){if(!r)return null;try{let s=new URL(r);if(s.hostname!=="graphql.prepr.io")return null;let t=s.pathname.split("/"),e=t[t.length-1];return e&&e.length>0?e:null}catch(s){return null}}function N(r){return m(this,null,function*(){let s=k(r);if(!s.valid)throw new a(s.error,"INVALID_TOKEN","getPreprEnvironmentSegments");try{let t=yield fetch(r,{headers:{"User-Agent":`Prepr-Preview-Bar/${A()}`,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({query:`{ _Segments { _id name } }`})});if(!t.ok)throw new a(`HTTP ${t.status}: ${t.statusText}`,"HTTP_ERROR","getPreprEnvironmentSegments");let e=yield t.json();if(!e||!e.data||!e.data._Segments)throw new a("Invalid response format from Prepr API","INVALID_RESPONSE","getPreprEnvironmentSegments");return e.data._Segments}catch(t){throw t instanceof a?t:new a("Failed to fetch segments from Prepr API","FETCH_ERROR","getPreprEnvironmentSegments",t instanceof Error?t:new Error(String(t)))}})}function T(r,s){return m(this,null,function*(){let t=[],e=null,i=null;if(E())try{t=yield N(r),e=j(s),i=b(s);}catch(p){console.error("Failed to fetch toolbar props:",p),t=[];}return {activeSegment:e,activeVariant:i,data:t}})}var F=T;function A(){return y.version}exports.PreprError=a;exports.createPreprMiddleware=_;exports.extractAccessToken=D;exports.getActiveSegment=j;exports.getActiveVariant=b;exports.getPreprEnvironmentSegments=N;exports.getPreprHeaders=V;exports.getPreprUUID=O;exports.getPreviewBarProps=F;exports.getToolbarProps=T;exports.isPreviewMode=E;exports.validatePreprToken=k;//# sourceMappingURL=index.cjs.map //# sourceMappingURL=index.cjs.map