@preprio/prepr-nextjs
Version:
Next.js package for Prepr CMS preview functionality with advanced debugging and visual editing capabilities
7 lines • 4.58 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 c=i=>{try{d(t.next(i));}catch(u){n(u);}},l=i=>{try{d(t.throw(i));}catch(u){n(u);}},d=i=>i.done?e(i.value):Promise.resolve(i.value).then(c,l);d((t=t.apply(r,s)).next());});var b="2.1.3";var _={version:b};function E(r,s,t){var f,h,w,v,y;let e,n;s&&"headers"in s?(e=s,n=t):(e=server.NextResponse.next(),n=s),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 c=r.headers.get("referer");c&&e.headers.set("Prepr-Context-initial_referral",c),e.headers.set("Prepr-Package",b);let l=functions.ipAddress(r)||null;r.headers.get("Cf-Connecting-Ip")&&(l=r.headers.get("Cf-Connecting-Ip")),l&&e.headers.set("Prepr-Visitor-IP",l);let d=(f=r.cookies.get("hubspotutk"))==null?void 0:f.value;d&&e.headers.set("Prepr-Hubspot-Id",d);let i=(h=r.cookies.get("__prepr_uid"))==null?void 0:h.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"||!(((w=r.cookies.get("Prepr-Preview-Mode"))==null?void 0:w.value)!=="false"))return e;e.headers.set("Prepr-Preview-Bar","true");let P=(v=r.cookies.get("Prepr-Segments"))==null?void 0:v.value;P&&e.headers.set("Prepr-Segments",P);let x=(y=r.cookies.get("Prepr-ABtesting"))==null?void 0:y.value;return x&&e.headers.set("Prepr-ABtesting",x),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,c){super(t);this.code=e;this.context=n;this.originalError=c;this.name="PreprError";}};function g(r){return a(this,null,function*(){return (yield headers.headers()).get(r)})}function z(){return a(this,null,function*(){return g("prepr-customer-id")})}function C(){return a(this,null,function*(){return g("Prepr-Segments")})}function N(){return a(this,null,function*(){return g("Prepr-ABtesting")})}function J(){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 M(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 K(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 I(r){return a(this,null,function*(){let s=M(r);if(!s.valid)throw new p(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 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 I(r),t=yield C(),e=yield N();}catch(n){console.error("Failed to fetch toolbar props:",n),s=[];}return {activeSegment:t,activeVariant:e,data:s}})}function A(){return _.version}exports.PreprError=p;exports.createPreprMiddleware=E;exports.extractAccessToken=K;exports.getActiveSegment=C;exports.getActiveVariant=N;exports.getPreprEnvironmentSegments=I;exports.getPreprHeaders=J;exports.getPreprUUID=z;exports.getToolbarProps=G;exports.isPreviewMode=T;exports.validatePreprToken=M;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map