@happykit/flags
Version:
Feature Flags for Next.js
2 lines (1 loc) • 2.9 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkJP7UWWU4js = require('./chunk-JP7UWWU4.js');var _chunkYV2CKLW7js = require('./chunk-YV2CKLW7.js');var _chunkNJP2ODHFjs = require('./chunk-NJP2ODHF.js');var _nanoid = require('nanoid');function q(g){let a="x-forwarded-for",i=g.headers.get(a);return typeof i=="string"?i:null}function R(g,{getDefinitions:a}={}){let i={path:"/",maxAge:15552e3,sameSite:"lax"},t=_chunkYV2CKLW7js.f.call(void 0, g);return async function(r){var k;let y=_chunkYV2CKLW7js.a.call(void 0, r,"getDefinitions,")?r.getDefinitions:a,f;if(typeof r.request.cookies.get=="function"){let e=r.request.cookies.get("hkvk");f=typeof e=="string"?e:e==null?void 0:e.value}else f=r.request.cookies.hkvk||null;let u=f||_nanoid.nanoid.call(void 0, ),o={endpoint:t.endpoint,envKey:t.envKey,requestBody:{visitorKey:u,user:r.user||null,traits:r.traits||null}},p=q(r.request),D=p?{"x-forwarded-for":p}:{};if(y){let e;try{e=await y(t.projectId,t.envKey,t.environment)}catch (e2){return _chunkJP7UWWU4js.a.call(void 0, {error:"network-error",flags:t.defaultFlags,input:o,cookie:null})}if(!e||e.format!=="v1"||e.projectId!==t.projectId||!Array.isArray(e.flags))return _chunkJP7UWWU4js.a.call(void 0, {error:"response-not-ok",flags:t.defaultFlags,input:o,cookie:null});let s=_chunkNJP2ODHFjs.e.call(void 0, {flags:e.flags,environment:t.environment,traits:r.traits?_chunkNJP2ODHFjs.c.call(void 0, r.traits):null,user:r.user?_chunkNJP2ODHFjs.a.call(void 0, r.user):null,visitor:u?_chunkNJP2ODHFjs.b.call(void 0, u):null}),n={flags:_chunkNJP2ODHFjs.d.call(void 0, s),visitor:u?_chunkNJP2ODHFjs.b.call(void 0, u):null},v=n.flags?n.flags:null;return{flags:_chunkYV2CKLW7js.b.call(void 0, v,t.defaultFlags),data:n,error:null,initialFlagState:{input:o,outcome:{data:n}},cookie:(k=n.visitor)!=null&&k.key?{name:"hkvk",value:n.visitor.key,options:i,args:["hkvk",n.visitor.key,i]}:null}}return fetch([o.endpoint,o.envKey].join("/"),{method:"POST",headers:Object.assign({"content-type":"application/json"},D),body:JSON.stringify(o.requestBody),cache:"no-store"}).then(e=>e.ok?e.json().then(s=>{var c;let n=s.flags?s.flags:null;return{flags:_chunkYV2CKLW7js.b.call(void 0, n,t.defaultFlags),data:s,error:null,initialFlagState:{input:o,outcome:{data:s}},cookie:(c=s.visitor)!=null&&c.key?{name:"hkvk",value:s.visitor.key,options:i,args:["hkvk",s.visitor.key,i]}:null}},()=>_chunkJP7UWWU4js.a.call(void 0, {error:"invalid-response-body",flags:t.defaultFlags,input:o,cookie:null})):_chunkJP7UWWU4js.a.call(void 0, {error:"response-not-ok",flags:t.defaultFlags,input:o,cookie:null}),()=>_chunkJP7UWWU4js.a.call(void 0, {error:"network-error",input:o,flags:t.defaultFlags,cookie:null}))}}function W(g){let a=_nanoid.nanoid.call(void 0, );return g.cookies.set("hkvk",a,{path:"/",maxAge:60*60*24*180,sameSite:"lax"}),a}exports.createGetEdgeFlags = R; exports.ensureVisitorKeyCookie = W;