unleash-server 7.2.0 → 7.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/lib/db/feature-environment-store.d.ts.map +1 -1
  2. package/dist/lib/db/feature-environment-store.js +7 -0
  3. package/dist/lib/db/feature-environment-store.js.map +1 -1
  4. package/dist/lib/db/feature-environment-store.test.d.ts +2 -0
  5. package/dist/lib/db/feature-environment-store.test.d.ts.map +1 -0
  6. package/dist/lib/db/feature-environment-store.test.js +24 -0
  7. package/dist/lib/db/feature-environment-store.test.js.map +1 -0
  8. package/frontend/build/index.html +1 -1
  9. package/frontend/build/static/{AdvancedPlayground-CUkOz1YF.js → AdvancedPlayground-D2Y0O_LK.js} +1 -1
  10. package/frontend/build/static/{BackendConnections-Bi1Fsohi.js → BackendConnections-C9HcQ9To.js} +1 -1
  11. package/frontend/build/static/{ChartItem-Ci-KFL7s.js → ChartItem-COMyVdgD.js} +1 -1
  12. package/frontend/build/static/{CreateProject-COHPsP3X.js → CreateProject-jRfRrbUO.js} +1 -1
  13. package/frontend/build/static/{FeatureMetricsChart-ClbKeGOa.js → FeatureMetricsChart-CQkGp91T.js} +1 -1
  14. package/frontend/build/static/{FeatureStaleDialog-DZvKjxPB.js → FeatureStaleDialog-DKeGFuL1.js} +1 -1
  15. package/frontend/build/static/{FeatureViewLazyExport-yCIrczZt.js → FeatureViewLazyExport-CgntSCvS.js} +2 -2
  16. package/frontend/build/static/{FlagMetricsChart-D0GI-ltv.js → FlagMetricsChart-oDTQTkxU.js} +1 -1
  17. package/frontend/build/static/{FrontendNetworkTrafficUsage-DlRkx8CV.js → FrontendNetworkTrafficUsage-E4pIeMFQ.js} +1 -1
  18. package/frontend/build/static/{ImpactMetricsPage-BYcbHNWC.js → ImpactMetricsPage-B3STis_H.js} +1 -1
  19. package/frontend/build/static/{LazyAdminExport-BjSYZTvt.js → LazyAdminExport-CsCsRIwk.js} +2 -2
  20. package/frontend/build/static/{LazyProjectExport-9mNkV9Jq.js → LazyProjectExport-DkN0UegC.js} +2 -2
  21. package/frontend/build/static/{LifecycleChartComponent-BigwXcU3.js → LifecycleChartComponent-Dz1wdYkW.js} +1 -1
  22. package/frontend/build/static/{LineChartComponent-CPcDsiNa.js → LineChartComponent-DG1LdcL_.js} +1 -1
  23. package/frontend/build/static/{MarkCompletedDialogue-CS-kM4vW.js → MarkCompletedDialogue-Bw9Iccid.js} +1 -1
  24. package/frontend/build/static/{NetworkConnectedEdges-C2nfTRKM.js → NetworkConnectedEdges-HU923-QZ.js} +1 -1
  25. package/frontend/build/static/{NetworkOverview-BKozpi8w.js → NetworkOverview-_igGCPCJ.js} +1 -1
  26. package/frontend/build/static/{NetworkPrometheusAPIWarning-wqCXwcem.js → NetworkPrometheusAPIWarning-BS9PGbzI.js} +1 -1
  27. package/frontend/build/static/{NetworkTraffic-Co7oakIE.js → NetworkTraffic-BpNEMFBl.js} +1 -1
  28. package/frontend/build/static/{NetworkTrafficUsage-DNDJZGXi.js → NetworkTrafficUsage-bSUVPjoc.js} +1 -1
  29. package/frontend/build/static/{ReactJSONEditor-BDMT4-_1.js → ReactJSONEditor-DZ9l5V9S.js} +1 -1
  30. package/frontend/build/static/{RoleCell-COtuTPWk.js → RoleCell-C-hJFmul.js} +1 -1
  31. package/frontend/build/static/{aggregateFeatureMetrics-ClblY5Ev.js → aggregateFeatureMetrics-Dli6i5No.js} +1 -1
  32. package/frontend/build/static/{formatTickValue-DojfJagm.js → formatTickValue-D3KZyzeb.js} +1 -1
  33. package/frontend/build/static/{index-CqYZiU1N.js → index-A5We7bvX.js} +9 -9
  34. package/frontend/build/static/{networkTrafficUsageHighlightPlugin-BMMmh5e_.js → networkTrafficUsageHighlightPlugin-DLE_BBMN.js} +1 -1
  35. package/frontend/build/static/{useApiTokens-B6vbGXUF.js → useApiTokens-DNIDLJlc.js} +1 -1
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- import{G as z,H as N,j as i,e8 as k,jA as B,e6 as W,s as d,i as J,J as G,r as u,e5 as P,B as H,ha as V,jB as O,jC as R,jD as Y,fL as K,e9 as M,ci as L,b9 as I,bb as T,e3 as Q,d6 as X,b as Z,bs as tt,jr as et}from"./index-CqYZiU1N.js";import{a as p,f as y,T as ot,p as f,b as h,d as at,c as rt,u as nt,B as st,e as lt,g as ct,h as it}from"./LazyAdminExport-BjSYZTvt.js";import{f as dt}from"./formatTickValue-DojfJagm.js";var C={},ut=N;Object.defineProperty(C,"__esModule",{value:!0});var A=C.default=void 0,pt=ut(z()),gt=i,ht=(0,pt.default)((0,gt.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");A=C.default=ht;const j=(t,e,r=!0)=>{const o=t.getFullYear(),a=t.getMonth(),n=y(t),s=W(t);return{key:n,year:o,month:a,dayCount:s,shortLabel:t.toLocaleString("en-US",{month:"short"}),label:e||t.toLocaleString("en-US",{month:"long",year:"numeric"}),selectable:r}},mt=t=>{const e=[j(t,"Current month")],r=k(t);for(let o=1;o<12;o++){const a=B(r,o);e.push(j(a,void 0,a>=ot))}return e},x=mt(p),bt=Object.fromEntries(x.map(t=>[t.key,t])),$="15rem",S=t=>t.spacing(3),q=d("button",{shouldForwardProp:t=>t!=="selected"})(({theme:t,selected:e})=>({cursor:"pointer",border:"none",backgroundColor:e?t.palette.secondary.light:"inherit",fontSize:t.typography.body1.fontSize,padding:t.spacing(.5),borderRadius:t.shape.borderRadius,color:t.palette.text.primary,transition:"background-color 0.2s ease",":focus-visible":{outline:`2px solid ${t.palette.primary.main}`},":hover:not(:disabled)":{backgroundColor:t.palette.action.hover}})),yt=d(q)(({theme:t})=>({":disabled":{cursor:"default",color:t.palette.text.disabled}})),ft=d(q)(({theme:t})=>({width:"100%",paddingBlock:t.spacing(1),textAlign:"left",borderRadius:0,paddingInline:S(t)})),Ct=d(J)(({theme:t})=>({whiteSpace:"nowrap",width:$,justifyContent:"space-between",fontWeight:"normal",color:t.palette.text.primary,borderColor:t.palette.divider,":focus-within":{borderColor:t.palette.primary.main},":hover":{borderColor:t.palette.text.disabled,backgroundColor:"inherit"},transition:"border-color 0.1s ease"})),xt=d("article")(({theme:t})=>({width:$,paddingBlock:t.spacing(2),display:"flex",flexFlow:"column",gap:t.spacing(2)})),St=d("article")(({theme:t})=>({paddingInline:S(t)})),vt=d("hgroup")(({theme:t})=>({h3:{margin:0,fontSize:t.typography.h3.fontSize},p:{color:t.palette.text.secondary,fontSize:t.typography.body2.fontSize}})),Dt=d("ul")(({theme:t})=>({listStyle:"none",padding:0,display:"grid",gridTemplateColumns:"repeat(4, 1fr)",rowGap:t.spacing(1)})),Rt=d("article")(({theme:t})=>({display:"flex",width:"100%",flexFlow:"column",gap:t.spacing(.5)})),Mt=d("p")(({theme:t})=>({paddingInline:S(t),fontSize:t.typography.body2.fontSize,margin:0,color:t.palette.text.secondary,fontWeight:"bold"})),jt=d("ul")(({theme:t})=>({listStyle:"none",margin:0,padding:0,width:"100%",li:{width:"100%"}})),wt=d(G)(({theme:t})=>({"& .MuiPaper-root":{borderRadius:t.shape.borderRadiusLarge,border:`1px solid ${t.palette.divider}`}})),zt=({selectedPeriod:t,setPeriod:e})=>{const r=[3,6,12].map(c=>({value:c,label:`Last ${c} months`})),[o,a]=u.useState(!1),n=u.useRef(null),s=c=>{e(c),a(!1)},l=t.grouping==="daily"?t.month===P(new Date,"yyyy-MM")?"Current month":f(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"}):`Last ${t.monthsBack} months`;return i.jsxs(H,{ref:n,children:[i.jsx(Ct,{endIcon:o?i.jsx(A,{}):i.jsx(V,{}),variant:"outlined",disableRipple:!0,onClick:()=>a(!0),children:l}),i.jsxs(wt,{open:o,anchorEl:n.current,onClose:()=>a(!1),anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[i.jsxs(xt,{children:[i.jsxs(St,{children:[i.jsxs(vt,{children:[i.jsx("h3",{children:"Select month"}),i.jsx("p",{children:"Last 12 months"})]}),i.jsx(Dt,{children:x.map(c=>i.jsx("li",{children:i.jsx(yt,{selected:t.grouping==="daily"&&c.key===t.month,disabled:!c.selectable,onClick:()=>{s({grouping:"daily",month:c.key})},children:c.shortLabel})},c.label))})]}),i.jsxs(Rt,{children:[i.jsx(Mt,{children:"Range"}),i.jsx(jt,{children:r.map(c=>i.jsx("li",{children:i.jsxs(ft,{selected:t.grouping==="monthly"&&c.value===t.monthsBack,type:"button",onClick:()=>{s({grouping:"monthly",monthsBack:c.value})},children:["Last ",c.value," months"]})},c.label))})]})]})," "]})]})},m={"/api/admin":{label:"Admin",color:"#6D66D9",order:1},"/api/frontend":{label:"Frontend",color:"#A39EFF",order:2},"/api/client":{label:"Server",color:"#D8D6FF",order:3}},kt=(t,e)=>{const{newRecord:r,labels:o}=v(t);return{datasets:t.apiData.filter(n=>!0).sort((n,s)=>m[n.apiPath].order-m[s.apiPath].order).map(n=>{const s=r();for(const c of Object.values(n.dataPoints))s[c.period]=c.trafficTypes[0].count;const l=m[n.apiPath];return{label:l.label,data:Object.values(s),backgroundColor:l.color,hoverBackgroundColor:l.color}}),labels:o}},Bt=t=>{const{newRecord:e,labels:r}=v(t);return{datasets:t.apiData.map(a=>{const n=e();for(const l of Object.values(a.dataPoints)){const c=l.connections;n[l.period]=c}const s={label:"Connections",color:"#6D66D9",order:1};return{label:s.label,data:Object.values(n),backgroundColor:s.color,hoverBackgroundColor:s.color}}),labels:r}},Pt=t=>{const{newRecord:e,labels:r}=v(t);return{datasets:t.apiData.map(a=>{const n=e();for(const l of Object.values(a.dataPoints)){const c=l.requests;n[l.period]=c}const s={label:"Frontend requests",color:"#A39EFF",order:1};return{label:s.label,data:Object.values(n),backgroundColor:s.color,hoverBackgroundColor:s.color}}),labels:r}},v=t=>{if(t.grouping==="monthly"){const e=h(t.dateRange.from),r=h(t.dateRange.to),o=Math.abs(O(r,e))+1,a={};for(let s=0;s<o;s++)a[y(R(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>l===o-1?"Current month":y(R(e,l)));return{newRecord:()=>({...a}),labels:n}}else{const e=h(t.dateRange.from),r=h(t.dateRange.to),o=Math.abs(Y(r,e))+1,a={};for(let s=0;s<o;s++)a[at(K(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>(l+1).toString());return{newRecord:()=>({...a}),labels:n}}},[Ot,...Lt]=Object.values(m).map(t=>t.label.toLowerCase()).toReversed(),w=`${Lt.toReversed().join(", ")}, and ${Ot}`,Nt=t=>t.grouping==="daily"?`A bar chart showing daily traffic usage for ${new Date(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"})}. Each date shows ${w} requests.`:`A bar chart showing monthly total traffic usage for the current month and the preceding ${t.monthsBack} months. Each month shows ${w} requests.`,D=(t,e=new Date)=>{const r=o=>P(o,"yyyy-MM-dd");if(t.grouping==="daily"){const o=f(t.month),a=r(o),n=r(M(o));return{from:a,to:n}}else{const o=r(k(B(e,t.monthsBack))),a=r(M(e));return{from:o,to:a}}},It=t=>{if(t.grouping==="daily")return 0;const e=Math.abs(O(new Date(t.dateRange.to),new Date(t.dateRange.from))),r=t.apiData.map(o=>o.dataPoints.filter(({period:a})=>a!==rt).reduce((a,n)=>a+n.trafficTypes[0].count,0)).reduce((o,a)=>o+a,0);return Math.round(r/e)},Tt=(t,{from:e,to:r})=>{const o=`api/admin/metrics/connection?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=L(I(o),At);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},At=t=>fetch(t).then(T("Metered Connections Metrics")).then(e=>e.json()),$t=(t,{from:e,to:r})=>{const o=`api/admin/metrics/request?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=L(I(o),qt);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},qt=t=>fetch(t).then(T("Consumption Requests Metrics")).then(e=>e.json()),Wt=(t,e,r)=>{var l,c;const{result:o}=nt(e.grouping,D(e,p)),{instanceStatus:a}=Q(),n=((c=(l=a==null?void 0:a.prices)==null?void 0:l[(a==null?void 0:a.billing)==="pay-as-you-go"?"payg":"pro"])==null?void 0:c.traffic)??st;return u.useMemo(()=>{if(o.state!=="success")return{chartData:{datasets:[],labels:[]},usageTotal:0,overageCost:0,estimatedMonthlyCost:0,requestSummaryUsage:0};const g=o.data,F=kt(g),b=lt(g),E=ct(b,t,n),_=it(g.apiData,t,p,n),U=e.grouping==="daily"?b:It(g);return{chartData:F,usageTotal:b,overageCost:E,estimatedMonthlyCost:_,requestSummaryUsage:U}},[JSON.stringify(o),t,JSON.stringify(e),n])},Jt=t=>{const{result:e}=Tt(t.grouping,D(t,p));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:Bt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Gt=t=>{const{result:e}=$t(t.grouping,D(t,p));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:Pt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Ht=d(X)(({theme:t})=>({display:"grid",gap:t.spacing(5)})),Vt=d("div")(({theme:t})=>({display:"flex",flexFlow:"row wrap",justifyContent:"space-between",gap:t.spacing(2,4),alignItems:"start"})),Yt=d("span")(({theme:t})=>({fontWeight:"bold"})),Ft=(t,e,r,o)=>({plugins:{annotation:{clip:!1,annotations:{line:{type:"line",borderDash:[5,5],yMin:r?r/30:0,yMax:r?r/30:0,borderColor:"gray",borderWidth:1,display:!!r&&!!o,label:{backgroundColor:"rgba(192, 192, 192, 0.8)",color:"black",padding:{top:10,bottom:10,left:10,right:10},content:"Average daily requests included in your plan",display:!!r}}}},legend:{position:"bottom",labels:{color:t.palette.text.primary,pointStyle:"circle",usePointStyle:!0,boxHeight:6,padding:15,boxPadding:5}},tooltip:{backgroundColor:t.palette.background.paper,titleColor:t.palette.text.primary,bodyColor:t.palette.text.primary,bodySpacing:6,padding:{top:20,bottom:20,left:30,right:30},borderColor:"rgba(0, 0, 0, 0.05)",borderWidth:3,usePointStyle:!0,caretSize:0,boxPadding:10,callbacks:{title:e}}},responsive:!0,scales:{x:{stacked:!0,ticks:{color:t.palette.text.secondary},grid:{display:!1}},y:{stacked:!0,ticks:{color:t.palette.text.secondary,maxTicksLimit:5,callback:dt},grid:{drawBorder:!1}}},elements:{bar:{borderRadius:5}},interaction:{mode:"index",intersect:!1}}),Kt=t=>{const e=Z(),{locationSettings:r}=tt(),[o,a]=u.useState({grouping:"daily",month:x[0].key}),n=u.useMemo(()=>Ft(e,s=>{if(o.grouping==="daily"){const l=bt[o.month];return new Date(l.year,l.month,Number.parseInt(s[0].label)).toLocaleDateString((r==null?void 0:r.locale)??"en-US",{month:"long",day:"numeric",year:"numeric"})}else{const l=f(s[0].label);return Number.isNaN(l.getTime())?"Current month to date":l.toLocaleDateString((r==null?void 0:r.locale)??"en-US",{month:"long",year:"numeric"})}},t,o.grouping==="daily"),[e,o,t]);return{chartDataSelection:o,setChartDataSelection:a,options:n}},Qt=et({bottomOverflow:34});export{Yt as B,zt as P,Ht as S,Vt as T,Wt as a,Jt as b,Gt as c,Nt as g,Qt as n,Kt as u};
1
+ import{G as z,H as N,j as i,e8 as k,jA as B,e6 as W,s as d,i as J,J as G,r as u,e5 as P,B as H,ha as V,jB as O,jC as R,jD as Y,fL as K,e9 as M,ci as L,b9 as I,bb as T,e3 as Q,d6 as X,b as Z,bs as tt,jr as et}from"./index-A5We7bvX.js";import{a as p,f as y,T as ot,p as f,b as h,d as at,c as rt,u as nt,B as st,e as lt,g as ct,h as it}from"./LazyAdminExport-CsCsRIwk.js";import{f as dt}from"./formatTickValue-D3KZyzeb.js";var C={},ut=N;Object.defineProperty(C,"__esModule",{value:!0});var A=C.default=void 0,pt=ut(z()),gt=i,ht=(0,pt.default)((0,gt.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");A=C.default=ht;const j=(t,e,r=!0)=>{const o=t.getFullYear(),a=t.getMonth(),n=y(t),s=W(t);return{key:n,year:o,month:a,dayCount:s,shortLabel:t.toLocaleString("en-US",{month:"short"}),label:e||t.toLocaleString("en-US",{month:"long",year:"numeric"}),selectable:r}},mt=t=>{const e=[j(t,"Current month")],r=k(t);for(let o=1;o<12;o++){const a=B(r,o);e.push(j(a,void 0,a>=ot))}return e},x=mt(p),bt=Object.fromEntries(x.map(t=>[t.key,t])),$="15rem",S=t=>t.spacing(3),q=d("button",{shouldForwardProp:t=>t!=="selected"})(({theme:t,selected:e})=>({cursor:"pointer",border:"none",backgroundColor:e?t.palette.secondary.light:"inherit",fontSize:t.typography.body1.fontSize,padding:t.spacing(.5),borderRadius:t.shape.borderRadius,color:t.palette.text.primary,transition:"background-color 0.2s ease",":focus-visible":{outline:`2px solid ${t.palette.primary.main}`},":hover:not(:disabled)":{backgroundColor:t.palette.action.hover}})),yt=d(q)(({theme:t})=>({":disabled":{cursor:"default",color:t.palette.text.disabled}})),ft=d(q)(({theme:t})=>({width:"100%",paddingBlock:t.spacing(1),textAlign:"left",borderRadius:0,paddingInline:S(t)})),Ct=d(J)(({theme:t})=>({whiteSpace:"nowrap",width:$,justifyContent:"space-between",fontWeight:"normal",color:t.palette.text.primary,borderColor:t.palette.divider,":focus-within":{borderColor:t.palette.primary.main},":hover":{borderColor:t.palette.text.disabled,backgroundColor:"inherit"},transition:"border-color 0.1s ease"})),xt=d("article")(({theme:t})=>({width:$,paddingBlock:t.spacing(2),display:"flex",flexFlow:"column",gap:t.spacing(2)})),St=d("article")(({theme:t})=>({paddingInline:S(t)})),vt=d("hgroup")(({theme:t})=>({h3:{margin:0,fontSize:t.typography.h3.fontSize},p:{color:t.palette.text.secondary,fontSize:t.typography.body2.fontSize}})),Dt=d("ul")(({theme:t})=>({listStyle:"none",padding:0,display:"grid",gridTemplateColumns:"repeat(4, 1fr)",rowGap:t.spacing(1)})),Rt=d("article")(({theme:t})=>({display:"flex",width:"100%",flexFlow:"column",gap:t.spacing(.5)})),Mt=d("p")(({theme:t})=>({paddingInline:S(t),fontSize:t.typography.body2.fontSize,margin:0,color:t.palette.text.secondary,fontWeight:"bold"})),jt=d("ul")(({theme:t})=>({listStyle:"none",margin:0,padding:0,width:"100%",li:{width:"100%"}})),wt=d(G)(({theme:t})=>({"& .MuiPaper-root":{borderRadius:t.shape.borderRadiusLarge,border:`1px solid ${t.palette.divider}`}})),zt=({selectedPeriod:t,setPeriod:e})=>{const r=[3,6,12].map(c=>({value:c,label:`Last ${c} months`})),[o,a]=u.useState(!1),n=u.useRef(null),s=c=>{e(c),a(!1)},l=t.grouping==="daily"?t.month===P(new Date,"yyyy-MM")?"Current month":f(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"}):`Last ${t.monthsBack} months`;return i.jsxs(H,{ref:n,children:[i.jsx(Ct,{endIcon:o?i.jsx(A,{}):i.jsx(V,{}),variant:"outlined",disableRipple:!0,onClick:()=>a(!0),children:l}),i.jsxs(wt,{open:o,anchorEl:n.current,onClose:()=>a(!1),anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[i.jsxs(xt,{children:[i.jsxs(St,{children:[i.jsxs(vt,{children:[i.jsx("h3",{children:"Select month"}),i.jsx("p",{children:"Last 12 months"})]}),i.jsx(Dt,{children:x.map(c=>i.jsx("li",{children:i.jsx(yt,{selected:t.grouping==="daily"&&c.key===t.month,disabled:!c.selectable,onClick:()=>{s({grouping:"daily",month:c.key})},children:c.shortLabel})},c.label))})]}),i.jsxs(Rt,{children:[i.jsx(Mt,{children:"Range"}),i.jsx(jt,{children:r.map(c=>i.jsx("li",{children:i.jsxs(ft,{selected:t.grouping==="monthly"&&c.value===t.monthsBack,type:"button",onClick:()=>{s({grouping:"monthly",monthsBack:c.value})},children:["Last ",c.value," months"]})},c.label))})]})]})," "]})]})},m={"/api/admin":{label:"Admin",color:"#6D66D9",order:1},"/api/frontend":{label:"Frontend",color:"#A39EFF",order:2},"/api/client":{label:"Server",color:"#D8D6FF",order:3}},kt=(t,e)=>{const{newRecord:r,labels:o}=v(t);return{datasets:t.apiData.filter(n=>!0).sort((n,s)=>m[n.apiPath].order-m[s.apiPath].order).map(n=>{const s=r();for(const c of Object.values(n.dataPoints))s[c.period]=c.trafficTypes[0].count;const l=m[n.apiPath];return{label:l.label,data:Object.values(s),backgroundColor:l.color,hoverBackgroundColor:l.color}}),labels:o}},Bt=t=>{const{newRecord:e,labels:r}=v(t);return{datasets:t.apiData.map(a=>{const n=e();for(const l of Object.values(a.dataPoints)){const c=l.connections;n[l.period]=c}const s={label:"Connections",color:"#6D66D9",order:1};return{label:s.label,data:Object.values(n),backgroundColor:s.color,hoverBackgroundColor:s.color}}),labels:r}},Pt=t=>{const{newRecord:e,labels:r}=v(t);return{datasets:t.apiData.map(a=>{const n=e();for(const l of Object.values(a.dataPoints)){const c=l.requests;n[l.period]=c}const s={label:"Frontend requests",color:"#A39EFF",order:1};return{label:s.label,data:Object.values(n),backgroundColor:s.color,hoverBackgroundColor:s.color}}),labels:r}},v=t=>{if(t.grouping==="monthly"){const e=h(t.dateRange.from),r=h(t.dateRange.to),o=Math.abs(O(r,e))+1,a={};for(let s=0;s<o;s++)a[y(R(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>l===o-1?"Current month":y(R(e,l)));return{newRecord:()=>({...a}),labels:n}}else{const e=h(t.dateRange.from),r=h(t.dateRange.to),o=Math.abs(Y(r,e))+1,a={};for(let s=0;s<o;s++)a[at(K(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>(l+1).toString());return{newRecord:()=>({...a}),labels:n}}},[Ot,...Lt]=Object.values(m).map(t=>t.label.toLowerCase()).toReversed(),w=`${Lt.toReversed().join(", ")}, and ${Ot}`,Nt=t=>t.grouping==="daily"?`A bar chart showing daily traffic usage for ${new Date(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"})}. Each date shows ${w} requests.`:`A bar chart showing monthly total traffic usage for the current month and the preceding ${t.monthsBack} months. Each month shows ${w} requests.`,D=(t,e=new Date)=>{const r=o=>P(o,"yyyy-MM-dd");if(t.grouping==="daily"){const o=f(t.month),a=r(o),n=r(M(o));return{from:a,to:n}}else{const o=r(k(B(e,t.monthsBack))),a=r(M(e));return{from:o,to:a}}},It=t=>{if(t.grouping==="daily")return 0;const e=Math.abs(O(new Date(t.dateRange.to),new Date(t.dateRange.from))),r=t.apiData.map(o=>o.dataPoints.filter(({period:a})=>a!==rt).reduce((a,n)=>a+n.trafficTypes[0].count,0)).reduce((o,a)=>o+a,0);return Math.round(r/e)},Tt=(t,{from:e,to:r})=>{const o=`api/admin/metrics/connection?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=L(I(o),At);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},At=t=>fetch(t).then(T("Metered Connections Metrics")).then(e=>e.json()),$t=(t,{from:e,to:r})=>{const o=`api/admin/metrics/request?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=L(I(o),qt);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},qt=t=>fetch(t).then(T("Consumption Requests Metrics")).then(e=>e.json()),Wt=(t,e,r)=>{var l,c;const{result:o}=nt(e.grouping,D(e,p)),{instanceStatus:a}=Q(),n=((c=(l=a==null?void 0:a.prices)==null?void 0:l[(a==null?void 0:a.billing)==="pay-as-you-go"?"payg":"pro"])==null?void 0:c.traffic)??st;return u.useMemo(()=>{if(o.state!=="success")return{chartData:{datasets:[],labels:[]},usageTotal:0,overageCost:0,estimatedMonthlyCost:0,requestSummaryUsage:0};const g=o.data,F=kt(g),b=lt(g),E=ct(b,t,n),_=it(g.apiData,t,p,n),U=e.grouping==="daily"?b:It(g);return{chartData:F,usageTotal:b,overageCost:E,estimatedMonthlyCost:_,requestSummaryUsage:U}},[JSON.stringify(o),t,JSON.stringify(e),n])},Jt=t=>{const{result:e}=Tt(t.grouping,D(t,p));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:Bt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Gt=t=>{const{result:e}=$t(t.grouping,D(t,p));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:Pt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Ht=d(X)(({theme:t})=>({display:"grid",gap:t.spacing(5)})),Vt=d("div")(({theme:t})=>({display:"flex",flexFlow:"row wrap",justifyContent:"space-between",gap:t.spacing(2,4),alignItems:"start"})),Yt=d("span")(({theme:t})=>({fontWeight:"bold"})),Ft=(t,e,r,o)=>({plugins:{annotation:{clip:!1,annotations:{line:{type:"line",borderDash:[5,5],yMin:r?r/30:0,yMax:r?r/30:0,borderColor:"gray",borderWidth:1,display:!!r&&!!o,label:{backgroundColor:"rgba(192, 192, 192, 0.8)",color:"black",padding:{top:10,bottom:10,left:10,right:10},content:"Average daily requests included in your plan",display:!!r}}}},legend:{position:"bottom",labels:{color:t.palette.text.primary,pointStyle:"circle",usePointStyle:!0,boxHeight:6,padding:15,boxPadding:5}},tooltip:{backgroundColor:t.palette.background.paper,titleColor:t.palette.text.primary,bodyColor:t.palette.text.primary,bodySpacing:6,padding:{top:20,bottom:20,left:30,right:30},borderColor:"rgba(0, 0, 0, 0.05)",borderWidth:3,usePointStyle:!0,caretSize:0,boxPadding:10,callbacks:{title:e}}},responsive:!0,scales:{x:{stacked:!0,ticks:{color:t.palette.text.secondary},grid:{display:!1}},y:{stacked:!0,ticks:{color:t.palette.text.secondary,maxTicksLimit:5,callback:dt},grid:{drawBorder:!1}}},elements:{bar:{borderRadius:5}},interaction:{mode:"index",intersect:!1}}),Kt=t=>{const e=Z(),{locationSettings:r}=tt(),[o,a]=u.useState({grouping:"daily",month:x[0].key}),n=u.useMemo(()=>Ft(e,s=>{if(o.grouping==="daily"){const l=bt[o.month];return new Date(l.year,l.month,Number.parseInt(s[0].label)).toLocaleDateString((r==null?void 0:r.locale)??"en-US",{month:"long",day:"numeric",year:"numeric"})}else{const l=f(s[0].label);return Number.isNaN(l.getTime())?"Current month to date":l.toLocaleDateString((r==null?void 0:r.locale)??"en-US",{month:"long",year:"numeric"})}},t,o.grouping==="daily"),[e,o,t]);return{chartDataSelection:o,setChartDataSelection:a,options:n}},Qt=et({bottomOverflow:34});export{Yt as B,zt as P,Ht as S,Vt as T,Wt as a,Jt as b,Gt as c,Nt as g,Qt as n,Kt as u};
@@ -1 +1 @@
1
- import{b9 as i,ci as p,r as n,bb as u}from"./index-CqYZiU1N.js";const k=(s={})=>{const a=i("api/admin/api-tokens"),{data:t,error:e,mutate:o}=p(a,h,s),r=n.useMemo(()=>t??[],[t]),c=n.useCallback(()=>{o().catch(console.warn)},[o]);return{tokens:r,error:e,loading:!e&&!t,refetch:c}},h=async s=>(await(await fetch(s).then(u("Api tokens"))).json()).tokens;export{k as u};
1
+ import{b9 as i,ci as p,r as n,bb as u}from"./index-A5We7bvX.js";const k=(s={})=>{const a=i("api/admin/api-tokens"),{data:t,error:e,mutate:o}=p(a,h,s),r=n.useMemo(()=>t??[],[t]),c=n.useCallback(()=>{o().catch(console.warn)},[o]);return{tokens:r,error:e,loading:!e&&!t,refetch:c}},h=async s=>(await(await fetch(s).then(u("Api tokens"))).json()).tokens;export{k as u};
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "unleash-server",
3
3
  "type": "module",
4
4
  "description": "Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.",
5
- "version": "7.2.0",
5
+ "version": "7.2.2",
6
6
  "keywords": [
7
7
  "unleash",
8
8
  "feature flag",