@preprio/prepr-nextjs
Version:
Next.js package for Prepr CMS preview functionality with advanced debugging and visual editing capabilities
7 lines • 4.5 kB
JavaScript
;var headers=require('next/headers'),functions=require('@vercel/functions'),server=require('next/server');var a=(r,s,t)=>new Promise((e,n)=>{var l=i=>{try{d(t.next(i));}catch(c){n(c);}},u=i=>{try{d(t.throw(i));}catch(c){n(c);}},d=i=>i.done?e(i.value):Promise.resolve(i.value).then(l,u);d((t=t.apply(r,s)).next());});var y="2.0.1";var _={version:y};function R(r,s,t){var x,f,h,w;let e,n;s&&"headers"in s?(e=s,n=t):(e=server.NextResponse.next(),n=s),process.env.PREPR_GRAPHQL_URL||console.error("PREPR_GRAPHQL_URL is not set"),r.nextUrl.searchParams.forEach((o,m)=>{switch(m){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 l=r.headers.get("referer");l&&e.headers.set("Prepr-Context-initial_referral",l),e.headers.set("Prepr-Package",y);let u=functions.ipAddress(r);u&&e.headers.set("Prepr-Visitor-IP",u);let d=(x=r.cookies.get("hubspotutk"))==null?void 0:x.value;d&&e.headers.set("Prepr-Hubspot-Id",d);let i=(f=r.cookies.get("__prepr_uid"))==null?void 0:f.value;if(i||(i=crypto.randomUUID(),e.cookies.set("__prepr_uid",i,{maxAge:1*365*24*60}),e.headers.set("Prepr-Customer-Id-Created","true")),e.headers.set("Prepr-Customer-Id",i),!(n!=null&&n.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=(w=r.cookies.get("Prepr-ABtesting"))==null?void 0:w.value;return P&&e.headers.set("Prepr-ABtesting",P),r.nextUrl.searchParams.forEach((o,m)=>{m==="prepr_preview_ab"&&(e.headers.set("Prepr-ABtesting",o),e.cookies.set("Prepr-ABtesting",o)),m==="prepr_preview_segment"&&(e.headers.set("Prepr-Segments",o),e.cookies.set("Prepr-Segments",o));}),e}var p=class extends Error{constructor(t,e,n,l){super(t);this.code=e;this.context=n;this.originalError=l;this.name="PreprError";}};function g(r){return a(this,null,function*(){return (yield headers.headers()).get(r)})}function F(){return a(this,null,function*(){return g("prepr-customer-id")})}function j(){return a(this,null,function*(){return g("Prepr-Segments")})}function S(){return a(this,null,function*(){return g("Prepr-ABtesting")})}function W(){return a(this,null,function*(){let r={};return (yield headers.headers()).forEach((t,e)=>{(e.startsWith("prepr")||e.startsWith("Prepr"))&&(r[e]=t);}),r})}function N(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 T(){return process.env.PREPR_ENV==="preview"}function $(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 A(r){return a(this,null,function*(){let s=N(r);if(!s.valid)throw new p(s.error,"INVALID_TOKEN","getPreprEnvironmentSegments");try{let t=yield fetch(r,{headers:{"User-Agent":`Prepr-Preview-Bar/${C()}`,"Content-Type":"application/json"},method:"POST",body:JSON.stringify({query:`{
_Segments {
_id
name
}
}`})});if(!t.ok)throw new p(`HTTP ${t.status}: ${t.statusText}`,"HTTP_ERROR","getPreprEnvironmentSegments");let e=yield t.json();if(!e||!e.data||!e.data._Segments)throw new p("Invalid response format from Prepr API","INVALID_RESPONSE","getPreprEnvironmentSegments");return e.data._Segments}catch(t){throw t instanceof p?t:new p("Failed to fetch segments from Prepr API","FETCH_ERROR","getPreprEnvironmentSegments",t instanceof Error?t:new Error(String(t)))}})}function G(r){return a(this,null,function*(){let s=[],t=null,e=null;if(T())try{s=yield A(r),t=yield j(),e=yield S();}catch(n){console.error("Failed to fetch toolbar props:",n),s=[];}return {activeSegment:t,activeVariant:e,data:s}})}function C(){return _.version}exports.PreprError=p;exports.createPreprMiddleware=R;exports.extractAccessToken=$;exports.getActiveSegment=j;exports.getActiveVariant=S;exports.getPreprEnvironmentSegments=A;exports.getPreprHeaders=W;exports.getPreprUUID=F;exports.getToolbarProps=G;exports.isPreviewMode=T;exports.validatePreprToken=N;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map