unleash-server 7.2.3 → 7.3.0
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.
- package/dist/lib/create-config.d.ts.map +1 -1
- package/dist/lib/create-config.js +8 -0
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/db/client-applications-store.d.ts.map +1 -1
- package/dist/lib/db/client-applications-store.js +32 -2
- package/dist/lib/db/client-applications-store.js.map +1 -1
- package/dist/lib/events/index.d.ts +2 -1
- package/dist/lib/events/index.d.ts.map +1 -1
- package/dist/lib/events/index.js +2 -0
- package/dist/lib/events/index.js.map +1 -1
- package/dist/lib/features/feature-links/feature-link-service.js +1 -1
- package/dist/lib/features/feature-links/feature-link-service.js.map +1 -1
- package/dist/lib/features/instance-stats/createInstanceStatsService.d.ts.map +1 -1
- package/dist/lib/features/instance-stats/createInstanceStatsService.js +5 -2
- package/dist/lib/features/instance-stats/createInstanceStatsService.js.map +1 -1
- package/dist/lib/features/instance-stats/getEdgeInstances.d.ts +6 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.d.ts.map +1 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.e2e.test.d.ts +2 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.e2e.test.d.ts.map +1 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.e2e.test.js +137 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.e2e.test.js.map +1 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.js +36 -0
- package/dist/lib/features/instance-stats/getEdgeInstances.js.map +1 -0
- package/dist/lib/features/instance-stats/instance-stats-service.d.ts +4 -1
- package/dist/lib/features/instance-stats/instance-stats-service.d.ts.map +1 -1
- package/dist/lib/features/instance-stats/instance-stats-service.js +8 -3
- package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
- package/dist/lib/features/instance-stats/instance-stats-service.test.js +2 -1
- package/dist/lib/features/instance-stats/instance-stats-service.test.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-read-model.test.js +0 -1
- package/dist/lib/features/release-plans/release-plan-read-model.test.js.map +1 -1
- package/dist/lib/features/scheduler/schedule-services.js +1 -1
- package/dist/lib/features/scheduler/schedule-services.js.map +1 -1
- package/dist/lib/metrics.test.js +2 -1
- package/dist/lib/metrics.test.js.map +1 -1
- package/dist/lib/middleware/origin-middleware.d.ts +1 -1
- package/dist/lib/middleware/origin-middleware.d.ts.map +1 -1
- package/dist/lib/middleware/origin-middleware.js +2 -9
- package/dist/lib/middleware/origin-middleware.js.map +1 -1
- package/dist/lib/middleware/origin-middleware.test.js +0 -16
- package/dist/lib/middleware/origin-middleware.test.js.map +1 -1
- package/dist/lib/openapi/spec/application-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/application-schema.js +1 -1
- package/dist/lib/openapi/spec/application-schema.js.map +1 -1
- package/dist/lib/openapi/spec/applications-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/create-application-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/create-application-schema.js +1 -1
- package/dist/lib/openapi/spec/create-application-schema.js.map +1 -1
- package/dist/lib/openapi/spec/create-strategy-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/create-strategy-schema.js +2 -2
- package/dist/lib/openapi/spec/create-strategy-schema.js.map +1 -1
- package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/event-search-response-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/index.d.ts +1 -0
- package/dist/lib/openapi/spec/index.d.ts.map +1 -1
- package/dist/lib/openapi/spec/index.js +1 -0
- package/dist/lib/openapi/spec/index.js.map +1 -1
- package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts +13 -0
- package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/instance-admin-stats-schema.js +13 -0
- package/dist/lib/openapi/spec/instance-admin-stats-schema.js.map +1 -1
- package/dist/lib/openapi/spec/integration-event-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/integration-events-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/me-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/permission-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/permission-schema.js +1 -1
- package/dist/lib/openapi/spec/permission-schema.js.map +1 -1
- package/dist/lib/openapi/spec/ready-check-schema.d.ts +19 -0
- package/dist/lib/openapi/spec/ready-check-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/ready-check-schema.js +17 -0
- package/dist/lib/openapi/spec/ready-check-schema.js.map +1 -0
- package/dist/lib/openapi/spec/update-strategy-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/update-strategy-schema.js +1 -1
- package/dist/lib/openapi/spec/update-strategy-schema.js.map +1 -1
- package/dist/lib/openapi/util/openapi-tags.d.ts +2 -2
- package/dist/lib/openapi/util/openapi-tags.js +1 -1
- package/dist/lib/openapi/util/openapi-tags.js.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.js +5 -0
- package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
- package/dist/lib/routes/admin-api/strategy.js +1 -1
- package/dist/lib/routes/admin-api/strategy.js.map +1 -1
- package/dist/lib/routes/admin-api/strategy.test.js +25 -1
- package/dist/lib/routes/admin-api/strategy.test.js.map +1 -1
- package/dist/lib/routes/health-check.test.js +2 -2
- package/dist/lib/routes/health-check.test.js.map +1 -1
- package/dist/lib/routes/index.d.ts.map +1 -1
- package/dist/lib/routes/index.js +2 -0
- package/dist/lib/routes/index.js.map +1 -1
- package/dist/lib/routes/ready-check.d.ts +14 -0
- package/dist/lib/routes/ready-check.d.ts.map +1 -0
- package/dist/lib/routes/ready-check.js +86 -0
- package/dist/lib/routes/ready-check.js.map +1 -0
- package/dist/lib/server-impl.d.ts +2 -1
- package/dist/lib/server-impl.d.ts.map +1 -1
- package/dist/lib/server-impl.js +2 -1
- package/dist/lib/server-impl.js.map +1 -1
- package/dist/lib/services/strategy-service.d.ts +4 -1
- package/dist/lib/services/strategy-service.d.ts.map +1 -1
- package/dist/lib/services/strategy-service.js +15 -2
- package/dist/lib/services/strategy-service.js.map +1 -1
- package/dist/lib/services/user-splash-service.d.ts.map +1 -1
- package/dist/lib/services/user-splash-service.js +7 -1
- package/dist/lib/services/user-splash-service.js.map +1 -1
- package/dist/lib/services/version-service.d.ts +2 -0
- package/dist/lib/services/version-service.d.ts.map +1 -1
- package/dist/lib/services/version-service.js.map +1 -1
- package/dist/lib/services/version-service.test.js +1 -0
- package/dist/lib/services/version-service.test.js.map +1 -1
- package/dist/lib/types/events.d.ts +5 -18
- package/dist/lib/types/events.d.ts.map +1 -1
- package/dist/lib/types/events.js +6 -15
- package/dist/lib/types/events.js.map +1 -1
- package/dist/lib/types/experimental.d.ts +1 -1
- package/dist/lib/types/experimental.d.ts.map +1 -1
- package/dist/lib/types/experimental.js +3 -5
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/lib/types/option.d.ts +8 -0
- package/dist/lib/types/option.d.ts.map +1 -1
- package/dist/lib/ui-config/ui-config-controller.d.ts +2 -8
- package/dist/lib/ui-config/ui-config-controller.d.ts.map +1 -1
- package/dist/lib/ui-config/ui-config-controller.js +3 -59
- package/dist/lib/ui-config/ui-config-controller.js.map +1 -1
- package/dist/migrations/20251027094509-milestone-progression-natural-pk.d.ts +3 -0
- package/dist/migrations/20251027094509-milestone-progression-natural-pk.d.ts.map +1 -0
- package/dist/migrations/20251027094509-milestone-progression-natural-pk.js +22 -0
- package/dist/migrations/20251027094509-milestone-progression-natural-pk.js.map +1 -0
- package/dist/migrations/20251103114221-milestone-progression-paused-at.d.ts +3 -0
- package/dist/migrations/20251103114221-milestone-progression-paused-at.d.ts.map +1 -0
- package/dist/migrations/20251103114221-milestone-progression-paused-at.js +14 -0
- package/dist/migrations/20251103114221-milestone-progression-paused-at.js.map +1 -0
- package/dist/migrations/20251105153729-create-safeguards-table.d.ts +3 -0
- package/dist/migrations/20251105153729-create-safeguards-table.d.ts.map +1 -0
- package/dist/migrations/20251105153729-create-safeguards-table.js +17 -0
- package/dist/migrations/20251105153729-create-safeguards-table.js.map +1 -0
- package/dist/server-dev.js +1 -5
- package/dist/server-dev.js.map +1 -1
- package/dist/test/e2e/ready.e2e.test.d.ts +2 -0
- package/dist/test/e2e/ready.e2e.test.d.ts.map +1 -0
- package/dist/test/e2e/ready.e2e.test.js +66 -0
- package/dist/test/e2e/ready.e2e.test.js.map +1 -0
- package/dist/test/e2e/stores/client-application-store.e2e.test.js +0 -1
- package/dist/test/e2e/stores/client-application-store.e2e.test.js.map +1 -1
- package/dist/test/fixtures/fake-impact-metrics.d.ts +12 -4
- package/dist/test/fixtures/fake-impact-metrics.d.ts.map +1 -1
- package/dist/test/fixtures/fake-impact-metrics.js +50 -26
- package/dist/test/fixtures/fake-impact-metrics.js.map +1 -1
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/{AdvancedPlayground-HWcSRQrt.js → AdvancedPlayground-BMmRjlFK.js} +1 -1
- package/frontend/build/static/{BackendConnections-Cug76pb0.js → BackendConnections-C4TwFekS.js} +1 -1
- package/frontend/build/static/{CreateProject-3uUrdDWJ.js → CreateProject-De6TDUjF.js} +1 -1
- package/frontend/build/static/{FeatureMetricsChart-DLvE4xPU.js → FeatureMetricsChart-CQOjOGdB.js} +2 -2
- package/frontend/build/static/FeatureStaleDialog-DFBMJIHQ.js +7 -0
- package/frontend/build/static/FeatureViewLazyExport-CUraS5Co.js +10 -0
- package/frontend/build/static/{FlagMetricsChart-DFDJ4xPh.js → FlagMetricsChart-BqT9hgdO.js} +2 -2
- package/frontend/build/static/{FrontendNetworkTrafficUsage-DVa2I8CC.js → FrontendNetworkTrafficUsage-BzwFAGbK.js} +1 -1
- package/frontend/build/static/{GridLayoutWrapper-Mt7n_5lt.js → GridLayoutWrapper-DY9lNz0U.js} +2 -2
- package/frontend/build/static/ImpactMetricsPage-Bqewvmqu.js +1 -0
- package/frontend/build/static/LazyAdminExport-DSSpZhpf.js +38 -0
- package/frontend/build/static/LazyProjectExport-Cd5au6uN.js +728 -0
- package/frontend/build/static/{LifecycleChartComponent-BOcT_Zpy.js → LifecycleChartComponent-iH7Xwal_.js} +3 -3
- package/frontend/build/static/{LineChartComponent-CudSs6ri.js → LineChartComponent-BnogHewS.js} +1 -1
- package/frontend/build/static/{MarkCompletedDialogue-4XT7ryE9.js → MarkCompletedDialogue-BOSV3MHM.js} +1 -1
- package/frontend/build/static/{NetworkConnectedEdges-CnEFuyuC.js → NetworkConnectedEdges-d0ZBRss5.js} +1 -1
- package/frontend/build/static/{NetworkOverview-KDe9n7ZE.js → NetworkOverview-DivQ4b83.js} +1 -1
- package/frontend/build/static/{NetworkPrometheusAPIWarning-Cy93jJcu.js → NetworkPrometheusAPIWarning-2jclDnfE.js} +1 -1
- package/frontend/build/static/{NetworkTraffic-BTN3OABv.js → NetworkTraffic-DDSLmVgI.js} +1 -1
- package/frontend/build/static/NetworkTrafficUsage-DYNGGkkm.js +1 -0
- package/frontend/build/static/{PercentageDonut-CmWbqKEA.js → PercentageDonut-aa1oSbho.js} +1 -1
- package/frontend/build/static/{ReactJSONEditor-xNDjbhPU.js → ReactJSONEditor-BKB6MheT.js} +1 -1
- package/frontend/build/static/{RoleCell-DSglYWti.js → RoleCell-CkV0Kf4-.js} +1 -1
- package/frontend/build/static/{aggregateFeatureMetrics-B7oOoe9g.js → aggregateFeatureMetrics-CrQXQAeM.js} +1 -1
- package/frontend/build/static/{formatTickValue-4OyGeZqN.js → formatTickValue-BCAqKqmg.js} +1 -1
- package/frontend/build/static/{index-D02pkj6r.js → index-B33kIVre.js} +120 -120
- package/frontend/build/static/{metricsFormatters-7MLBOEud.js → metricsFormatters-C7iN2dDH.js} +1 -1
- package/frontend/build/static/{networkTrafficUsageHighlightPlugin-CT-MfVrm.js → networkTrafficUsageHighlightPlugin-o9kHeQ2O.js} +1 -1
- package/frontend/build/static/useApiTokens-eXyUbKcO.js +1 -0
- package/frontend/package.json +3 -4
- package/package.json +3 -3
- package/frontend/build/static/FeatureStaleDialog-BFWmPzw7.js +0 -7
- package/frontend/build/static/FeatureViewLazyExport-DfivW7sC.js +0 -10
- package/frontend/build/static/ImpactMetricsPage-B3ERxAH0.js +0 -1
- package/frontend/build/static/LazyAdminExport-s8FIvcqq.js +0 -38
- package/frontend/build/static/LazyProjectExport-DN00bJrc.js +0 -728
- package/frontend/build/static/NetworkTrafficUsage-DwnXvons.js +0 -1
- package/frontend/build/static/merge-C7IT0rZd.svg +0 -3
- package/frontend/build/static/useApiTokens-wTDjjd8a.js +0 -1
package/frontend/build/static/{metricsFormatters-7MLBOEud.js → metricsFormatters-C7iN2dDH.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{j1 as u}from"./index-B33kIVre.js";const c=t=>{switch(t){case"hour":return"minute";case"day":return"hour";case"week":return"day";case"month":return"week";default:return"day"}},g=t=>{switch(t){case"hour":return"HH:mm";case"day":return"HH:mm";case"week":return"MMM dd";case"month":return"MMM dd";default:return"MMM dd"}},m=t=>{const{__name__:e,...s}=t,r=Object.entries(s).filter(([n,a])=>n!=="__name__"&&a).map(([n,a])=>`${n}=${a}`).join(", ");return!e&&!r?"Series":e?r?`${e} (${r})`:e:r},f=u(1e3,1),o=t=>t.startsWith("unleash_counter_")?"counter":t.startsWith("unleash_gauge_")?"gauge":t.startsWith("unleash_histogram_")?"histogram":"unknown",h=t=>{const e=o(t);return e==="counter"?"count":e==="histogram"?"p50":"avg"};export{h as a,m as b,c,g as d,f,o as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{G as z,H as N,j as i,eg as k,jI as P,ee as J,s as d,i as W,J as G,r as u,ed as B,B as H,hf as K,jJ as O,jK as R,jL as V,fT as Y,eh as M,cn as L,b9 as I,bb as T,eb as Q,dg as X,b as Z,bs as tt,jz as et}from"./index-D02pkj6r.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-s8FIvcqq.js";import{f as dt}from"./formatTickValue-4OyGeZqN.js";var C={},ut=N;Object.defineProperty(C,"__esModule",{value:!0});var $=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");$=C.default=ht;const j=(t,e,r=!0)=>{const o=t.getFullYear(),a=t.getMonth(),n=y(t),s=J(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=P(r,o);e.push(j(a,void 0,a>=ot))}return e},x=mt(p),bt=Object.fromEntries(x.map(t=>[t.key,t])),q="15rem",S=t=>t.spacing(3),A=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(A)(({theme:t})=>({":disabled":{cursor:"default",color:t.palette.text.disabled}})),ft=d(A)(({theme:t})=>({width:"100%",paddingBlock:t.spacing(1),textAlign:"left",borderRadius:0,paddingInline:S(t)})),Ct=d(W)(({theme:t})=>({whiteSpace:"nowrap",width:q,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:q,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===B(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($,{}):i.jsx(K,{}),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}},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.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}},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.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(V(r,e))+1,a={};for(let s=0;s<o;s++)a[at(Y(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=>B(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(P(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),$t);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},$t=t=>fetch(t).then(T("Metered Connections Metrics")).then(e=>e.json()),qt=(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),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("Consumption Requests Metrics")).then(e=>e.json()),Jt=(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])},Wt=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:Pt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Gt=t=>{const{result:e}=qt(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)])},Ht=d(X)(({theme:t})=>({display:"grid",gap:t.spacing(5)})),Kt=d("div")(({theme:t})=>({display:"flex",flexFlow:"row wrap",justifyContent:"space-between",gap:t.spacing(2,4),alignItems:"start"})),Vt=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}}),Yt=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{Vt as B,zt as P,Ht as S,Kt as T,Jt as a,Wt as b,Gt as c,Nt as g,Qt as n,Yt as u};
|
|
1
|
+
import{G as z,H as N,j as i,eb as k,jF as P,e9 as W,s as d,i as G,J as H,r as u,e8 as B,B as J,hb as V,jG as O,jH as R,jI as Y,fP as K,ec as M,cm as I,b9 as L,bb as T,e6 as Q,db as X,b as Z,bs as tt,jw as et}from"./index-B33kIVre.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-DSSpZhpf.js";import{f as dt}from"./formatTickValue-BCAqKqmg.js";var C={},ut=N;Object.defineProperty(C,"__esModule",{value:!0});var F=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");F=C.default=ht;const w=(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}},bt=t=>{const e=[w(t,"Current month")],r=k(t);for(let o=1;o<12;o++){const a=P(r,o);e.push(w(a,void 0,a>=ot))}return e},x=bt(p),mt=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(G)(({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"})),wt=d("ul")(({theme:t})=>({listStyle:"none",margin:0,padding:0,width:"100%",li:{width:"100%"}})),jt=d(H)(({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===B(new Date,"yyyy-MM")?"Current month":f(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"}):`Last ${t.monthsBack} months`;return i.jsxs(J,{ref:n,children:[i.jsx(Ct,{endIcon:o?i.jsx(F,{}):i.jsx(V,{}),variant:"outlined",disableRipple:!0,onClick:()=>a(!0),children:l}),i.jsxs(jt,{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(wt,{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))})]})]})," "]})]})},b={"/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)=>b[n.apiPath].order-b[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=b[n.apiPath];return{label:l.label,data:Object.values(s),backgroundColor:l.color,hoverBackgroundColor:l.color}}),labels:o}},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.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}},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.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,...It]=Object.values(b).map(t=>t.label.toLowerCase()).toReversed(),j=`${It.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 ${j} requests.`:`A bar chart showing monthly total traffic usage for the current month and the preceding ${t.monthsBack} months. Each month shows ${j} requests.`,D=(t,e=new Date)=>{const r=o=>B(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(P(e,t.monthsBack))),a=r(M(e));return{from:o,to:a}}},Lt=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}=I(L(o),Ft);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},Ft=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}=I(L(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,A=kt(g),m=lt(g),E=ct(m,t,n),_=it(g.apiData,t,p,n),U=e.grouping==="daily"?m:Lt(g);return{chartData:A,usageTotal:m,overageCost:E,estimatedMonthlyCost:_,requestSummaryUsage:U}},[JSON.stringify(o),t,JSON.stringify(e),n])},Gt=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:Pt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Ht=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:Bt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Jt=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"})),At=(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(()=>At(e,s=>{if(o.grouping==="daily"){const l=mt[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,Jt as S,Vt as T,Wt as a,Gt as b,Ht as c,Nt as g,Qt as n,Kt as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b9 as i,cm as p,r as n,bb as u}from"./index-B33kIVre.js";const d=(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{d as u};
|
package/frontend/package.json
CHANGED
|
@@ -66,7 +66,6 @@
|
|
|
66
66
|
"@types/react-table": "7.7.20",
|
|
67
67
|
"@types/react-test-renderer": "18.3.1",
|
|
68
68
|
"@types/semver": "7.7.0",
|
|
69
|
-
"@types/uuid": "^9.0.0",
|
|
70
69
|
"@uiw/codemirror-theme-duotone": "4.23.13",
|
|
71
70
|
"@uiw/react-codemirror": "4.23.13",
|
|
72
71
|
"@unleash/proxy-client-react": "^5.0.0",
|
|
@@ -123,7 +122,7 @@
|
|
|
123
122
|
"unleash-proxy-client": "^3.7.3",
|
|
124
123
|
"use-query-params": "^2.2.1",
|
|
125
124
|
"vanilla-jsoneditor": "^0.23.0",
|
|
126
|
-
"vite": "5.4.
|
|
125
|
+
"vite": "5.4.21",
|
|
127
126
|
"vite-plugin-env-compatible": "2.0.1",
|
|
128
127
|
"vite-plugin-svgr": "3.3.0",
|
|
129
128
|
"vite-tsconfig-paths": "4.3.2",
|
|
@@ -135,7 +134,7 @@
|
|
|
135
134
|
"@xmldom/xmldom": "^0.9.0",
|
|
136
135
|
"jsonpath-plus": "10.3.0",
|
|
137
136
|
"json5": "^2.2.2",
|
|
138
|
-
"vite": "5.4.
|
|
137
|
+
"vite": "5.4.21",
|
|
139
138
|
"semver": "7.7.2",
|
|
140
139
|
"ws": "^8.18.0",
|
|
141
140
|
"@types/react": "18.3.23"
|
|
@@ -159,7 +158,7 @@
|
|
|
159
158
|
"last 1 safari version"
|
|
160
159
|
]
|
|
161
160
|
},
|
|
162
|
-
"packageManager": "yarn@4.
|
|
161
|
+
"packageManager": "yarn@4.10.3",
|
|
163
162
|
"dependencies": {
|
|
164
163
|
"chartjs-plugin-datalabels": "^2.2.0",
|
|
165
164
|
"json-2-csv": "^5.5.5",
|
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.
|
|
5
|
+
"version": "7.3.0",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"unleash",
|
|
8
8
|
"feature flag",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"murmurhash3js": "^3.0.1",
|
|
113
113
|
"mustache": "^4.1.0",
|
|
114
114
|
"nodemailer": "^7.0.7",
|
|
115
|
-
"normalize-url": "^
|
|
115
|
+
"normalize-url": "^8.0.0",
|
|
116
116
|
"openapi-types": "^12.1.3",
|
|
117
117
|
"owasp-password-strength-test": "^1.3.0",
|
|
118
118
|
"parse-database-url": "^0.3.0",
|
|
@@ -211,5 +211,5 @@
|
|
|
211
211
|
"yarn biome format --write --no-errors-on-unmatched"
|
|
212
212
|
]
|
|
213
213
|
},
|
|
214
|
-
"packageManager": "yarn@4.
|
|
214
|
+
"packageManager": "yarn@4.10.3"
|
|
215
215
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{G as W,H as Y,j as t,A as J,l as K,C as D,bh as de,m as ue,o as pe,iI as he,n as ge,s as j,b as Q,T as C,u as me,ba as fe,r as x,b9 as X,bb as Z,bd as xe,as as ee,db as z,c2 as ve,c0 as be,iJ as ye,d9 as Se,de as M,b5 as V,iK as Te,dd as je,dc as Ee,iL as Ce,cx as Re,bE as te,bt as ae,bc as se,iM as we,iN as Ae,iO as ke,iP as Ie,hX as De,hN as ne,iQ as Pe,i as Oe,iR as Fe,cc as re,aQ as B,bB as _e,fV as Ve,e as $,bF as $e,bD as qe,bK as Be,b$ as Ne,cf as Le,iS as Ue,h as _,cS as ze,b8 as Me,cT as He,bp as Ge,aU as We,aV as oe,aY as N,V as Ye,df as Je,aR as Ke,bi as H,bf as ie,iT as Qe,iU as Xe,B as Ze,aq as et,hL as tt,iV as at,cn as st,cU as nt,iW as rt,fT as ot}from"./index-D02pkj6r.js";var L={},it=Y;Object.defineProperty(L,"__esModule",{value:!0});var le=L.default=void 0,lt=it(W()),ct=t,dt=(0,lt.default)((0,ct.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");le=L.default=dt;const ut=he(),Kt=({options:e,selectedOptions:s,indeterminateOptions:a,tagType:c,existingTags:o,disabled:i=!1,onChange:n})=>{const l=t.jsx(ge,{fontSize:"small"}),u=p=>p.inputValue?p.inputValue:p.title,m=({key:p,...h},r,{selected:g})=>{const y=(a==null?void 0:a.some(b=>b.title===r.title))??!1;return t.jsxs("li",{...h,children:[t.jsx(D,{condition:!!r.inputValue,show:t.jsx(de,{sx:{mr:b=>b.spacing(.5)}}),elseShow:t.jsx(ue,{icon:l,checkedIcon:t.jsx(pe,{fontSize:"small"}),indeterminateIcon:t.jsx(le,{fontSize:"small"}),sx:{mr:b=>b.spacing(.5)},checked:g&&!y,indeterminate:y})}),r.title]},p)},f=(p,h)=>{const r=h.inputValue.trim(),g=ut(p,{...h,inputValue:r}),y=p.some(b=>r===b.title);return r.length>=2&&!y&&g.push({inputValue:r,title:`Create new value "${r}"`}),g};return t.jsx(J,{multiple:!0,id:"checkboxes-tag",sx:{marginTop:p=>p.spacing(2),width:500},disableCloseOnSelect:!0,options:e,value:s,isOptionEqualToValue:(p,h)=>h.inputValue&&h.inputValue!==""?p.title===h.inputValue:p.title===h.title,getOptionLabel:u,renderOption:m,filterOptions:f,ListboxProps:{style:{maxHeight:200,overflow:"auto"}},onChange:n,renderInput:p=>t.jsx(K,{...p,label:"Select values",placeholder:"Select values"}),disabled:i})},pt=j("li")({flexDirection:"column"}),Qt=({options:e,value:s,disabled:a=!1,onChange:c})=>{const o=Q();return t.jsx(J,{disablePortal:!0,disabled:a,id:"tag-type-select",sx:{marginTop:i=>i.spacing(2),width:500},options:e,disableClearable:!0,value:s,getOptionLabel:i=>i.name,renderOption:({key:i,...n},l)=>t.jsxs(pt,{...n,style:{alignItems:"flex-start",gap:o.spacing(.5)},children:[t.jsx(C,{variant:"body1",children:l.name}),t.jsx(C,{variant:"caption",children:l.description})]},i),renderInput:i=>t.jsx(K,{...i,label:"Tag type",value:s}),onChange:c,ListboxProps:{style:{maxHeight:200,overflow:"auto"}}})},Xt=()=>{const{makeRequest:e,createRequest:s,errors:a,loading:c}=me({propagateErrors:!0});return{createTag:async n=>{const u=s("api/admin/tags",{method:"POST",body:JSON.stringify(n)});return e(u.caller,u.id)},bulkUpdateTags:async(n,l)=>{const u=`api/admin/projects/${l}/tags`,m=s(u,{method:"PUT",body:JSON.stringify(n)});return e(m.caller,m.id)},errors:a,loading:c}},Zt=(e,s={})=>{const a=async()=>{const m=X(`api/admin/tags/${e}`);return(await fetch(m,{method:"GET"}).then(Z("Tags"))).json()},c=`api/admin/tags/${e}`,{data:o,error:i}=fe(!!e,{tags:[]},c,a,s),[n,l]=x.useState(!i&&!o),u=()=>{xe(c)};return x.useEffect(()=>{l(!i&&!o)},[o,i]),{tags:(o==null?void 0:o.tags)||[],error:i,loading:n,refetch:u}},ht=j("div")({display:"flex",flexDirection:"column"}),gt=({strategy:e,setStrategy:s,projectId:a,environment:c,editable:o,permission:i=je})=>{const{trackEvent:n}=ee(),[l,u]=x.useState([]),m=Q(),f=e!=null&&e.parameters&&"stickiness"in(e==null?void 0:e.parameters)?String(e.parameters.stickiness):"default";x.useEffect(()=>{u((e.variants||[]).map(r=>({...r,new:o||!1,isValid:!0,id:z(),overrides:[]})))},[]),x.useEffect(()=>{s(r=>({...r,variants:l.map(g=>({stickiness:f,name:g.name,weight:g.weight,payload:g.payload,weightType:g.weightType}))}))},[f,JSON.stringify(l)]);const p=(r,g)=>{u(y=>M(y.map(b=>b.id===g?r:b),1e3))},h=()=>{const r=z();u(g=>[...g,{name:"",weightType:Ee.VARIABLE,weight:0,stickiness:f,new:!0,isValid:!1,id:r}]),n("strategy-variants",{props:{eventType:"variant added"}})};return t.jsxs(t.Fragment,{children:[t.jsxs(C,{component:"h3",sx:{m:0,display:"flex",gap:"1ch"},variant:"h3",children:["Variants",t.jsx(ve,{htmlTooltip:!0,tooltip:t.jsxs(t.Fragment,{children:[t.jsx("span",{children:"Variants allow to attach one or more values to this strategy. Variants at the strategy level override variants at the feature level."}),t.jsx(be,{target:"_blank",href:"https://docs.getunleash.io/reference/strategy-variants",children:"Learn more"})]})})]}),t.jsxs(ht,{children:[t.jsx(ye,{}),l.map((r,g)=>t.jsx(Se,{disableOverrides:!0,variant:r,variants:l,updateVariant:y=>p(y,r.id),removeVariant:()=>u(y=>M(y.filter(b=>b.id!==r.id),1e3)),decorationColor:m.palette.variants[g%m.palette.variants.length]},r.id))]}),t.jsx(V,{onClick:h,variant:"outlined",permission:i,projectId:a,environmentId:c,"data-testid":"ADD_STRATEGY_VARIANT_BUTTON",children:"Add variant"}),t.jsx(Te,{variants:l})]})},mt=j("form")(({theme:e})=>({display:"grid",gap:e.spacing(2)})),G=j("hr")(({theme:e})=>({width:"100%",height:"1px",margin:e.spacing(2,0),border:"none",background:e.palette.background.elevation2})),ft=j("div")(({theme:e})=>({display:"flex",justifyContent:"end",gap:e.spacing(2),paddingBottom:e.spacing(10)})),xt=({projectId:e,environmentId:s,permission:a,onSubmit:c,onCancel:o,loading:i,strategy:n,setStrategy:l,segments:u,setSegments:m,errors:f})=>{const p=Ce(n.constraints),h=Re(a,e,s),{strategyDefinition:r}=te(n==null?void 0:n.name),g=ae(),{uiConfig:y,error:b,loading:P}=se();if(b)throw b;if(P||!r)return null;const O=S=>r.parameters.find(E=>E.name===S),R=(S,E)=>{const w=O(S);if(S!=="groupId"){const I=Fe(w,E);return I?(f.setFormError(S,I),!1):(f.removeFormError(S),!0)}return!0},d=()=>r.parameters.map(S=>S.name).map(S=>{var E;return R(S,(E=n.parameters)==null?void 0:E[S])}).every(Boolean),k=()=>{g(`/projects/${e}/settings/default-strategy`)},F=async S=>{if(S.preventDefault(),d())c();else return};return t.jsxs(mt,{onSubmit:F,children:[t.jsx(we,{title:n.title||"",setTitle:S=>{l(E=>({...E,title:S}))}}),t.jsx(Ae,{segments:u,setSegments:m,projectId:e}),t.jsx(ke,{projectId:e,environmentId:s,strategy:n,setStrategy:l}),t.jsx(G,{}),t.jsx(Ie,{strategy:n,strategyDefinition:r,setStrategy:l,validateParameter:R,errors:f,hasAccess:h}),t.jsx(D,{condition:n.parameters!=null&&"stickiness"in n.parameters,show:t.jsx(gt,{strategy:n,setStrategy:l,environment:s,projectId:e,permission:[De,ne]})}),t.jsx(G,{}),t.jsxs(ft,{children:[t.jsx(V,{permission:a,projectId:e,environmentId:s,variant:"contained",color:"primary",type:"submit",disabled:i||!p||f.hasFormErrors(),"data-testid":Pe,children:"Save strategy"}),t.jsx(Oe,{type:"button",color:"primary",onClick:o||k,disabled:i,children:"Cancel"})]})]})},vt=(e,s)=>{var n,l;const{project:a,refetch:c}=re(e),o={name:"flexibleRollout",constraints:[],parameters:{rollout:"100",stickiness:a.defaultStickiness||"default",groupId:""}},i=(l=(n=a.environments)==null?void 0:n.find(u=>u.environment===s))==null?void 0:l.defaultStrategy;return{defaultStrategyFallback:o,strategy:i,refetch:c}},ea=()=>{const e=B("projectId"),s=_e("environmentId"),{refetch:a}=re(e),{defaultStrategyFallback:c,strategy:o,refetch:i}=vt(e,s),[n,l]=x.useState(o||c),[u,m]=x.useState([]),{updateDefaultStrategy:f,loading:p}=Ve(),{strategyDefinition:h}=te(n==null?void 0:n.name),{setToastData:r,setToastApiError:g}=$(),y=$e(),{uiConfig:b}=se(),{unleashUrl:P}=b,O=ae(),{trackEvent:R}=ee(),{segments:d,refetchSegments:k}=qe();x.useEffect(()=>{if(d&&(o!=null&&o.segments)){const w=[];for(const I of o==null?void 0:o.segments)w.push(...d.filter(T=>T.id===I));m(w)}},[JSON.stringify(d),JSON.stringify(o==null?void 0:o.segments)]);const F=bt(n,u),S=async w=>{await f(e,s,w),R("default_strategy",{props:{action:"edit",hasTitle:!!w.title}}),k(),a(),r({text:"Default Strategy updated",type:"success"})},E=async()=>{const w=`/projects/${e}/settings/default-strategy`;try{await S(F),await i(),O(w)}catch(I){g(_(I))}};return!h||!n?null:t.jsx(Be,{modal:!0,title:Ne((n==null?void 0:n.name)??""),description:St,documentationLink:Tt,documentationLinkLabel:jt,formatApiCode:()=>yt(e,s,F,h,P),children:t.jsx(xt,{projectId:e,strategy:n,setStrategy:l,segments:u,setSegments:m,environmentId:s,onSubmit:E,loading:p,permission:[Le,ne],errors:y,isChangeRequest:!1})})},bt=(e,s)=>({name:e.name,title:e.title,constraints:e.constraints??[],parameters:e.parameters??{},variants:e.variants??[],segments:s.map(a=>a.id),disabled:e.disabled??!1}),yt=(e,s,a,c,o)=>{if(!o)return"";const i={...a,parameters:Ue(a.parameters??{},c)},n=`${o}/api/admin/projects/${e}/environments/${s}/default-strategy}`,l=JSON.stringify(i,void 0,2);return`curl --location --request PUT '${n}' \\
|
|
2
|
-
--header 'Authorization: INSERT_API_KEY' \\
|
|
3
|
-
--header 'Content-Type: application/json' \\
|
|
4
|
-
--data-raw '${l}'`},St=`
|
|
5
|
-
An activation strategy will only run when a feature flag is enabled and provides a way to control who will get access to the feature.
|
|
6
|
-
If any of a feature flag's activation strategies returns true, the user will get access.
|
|
7
|
-
`,Tt="https://docs.getunleash.io/reference/projects#project-default-strategy",jt="Default strategy documentation",Et=j(ze,{shouldForwardProp:e=>e!=="expandable"})(({theme:e,expandable:s})=>({boxShadow:"none",padding:e.spacing(.5,3,.5,2),display:"flex",alignItems:"center",borderRadius:e.shape.borderRadiusLarge,pointerEvents:"auto",opacity:1,"&&&":{cursor:s?"pointer":"default"},":focus-within":{background:"none"}})),Ct=j("header")(({theme:e})=>({display:"flex",columnGap:e.spacing(1),paddingRight:e.spacing(1),width:"100%",color:e.palette.text.primary,alignItems:"center",minHeight:e.spacing(8)})),Rt=j("hgroup")(({theme:e})=>({display:"flex",flexFlow:"row wrap",flex:1,columnGap:e.spacing(1)})),wt=j("p")(({theme:e})=>({width:"100%",fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary})),At=j(Me)(({theme:e})=>({fontSize:e.typography.h2.fontSize,fontWeight:e.typography.fontWeightMedium})),ce=j("p")(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.info.contrastText,backgroundColor:e.palette.info.light,whiteSpace:"nowrap",width:"min-content",borderRadius:e.shape.borderRadiusExtraLarge,padding:e.spacing(.5,1)})),kt=j(ce)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary,backgroundColor:e.palette.neutral.light})),It=({strategyCount:e,releasePlanCount:s})=>{if(e===0&&s===0)return t.jsx(kt,{children:"0 strategies added"});const o=`${[s>0?"Release plan":void 0,(()=>{switch(e){case 0:return;case 1:return"1 strategy";default:return`${e} strategies`}})()].filter(Boolean).join(", ")} added`;return t.jsx(ce,{children:o})},Dt="environment-accordion-summary",ta=({environmentId:e,children:s,expandable:a=!0,environmentMetadata:c,...o})=>{const i=He();return t.jsx(Et,{...o,expandIcon:t.jsx(Ge,{sx:{visibility:a?"visible":"hidden"}}),id:i,"aria-controls":`environment-accordion-${i}-content`,expandable:a,tabIndex:a?0:-1,className:Dt,children:t.jsxs(Ct,{"data-loading":!0,children:[t.jsxs(Rt,{children:[t.jsx(wt,{children:"Environment"}),t.jsx(At,{component:"h2",children:e}),c?t.jsx(It,{...c}):null]}),s]})})},Pt=e=>{const{setToastData:s,setToastApiError:a}=$(),{addChange:c}=We(),{refetch:o}=oe(e),[i,n]=x.useState(!1),[l,u]=x.useState({isOpen:!1}),m=x.useCallback((h,r,g,y)=>{u({featureName:h,environment:r,enabled:g,shouldActivateDisabledStrategies:y,isOpen:!0})},[]),f=x.useCallback(()=>{u(h=>({...h,isOpen:!1}))},[]),p=x.useCallback(async()=>{try{n(!0),await c(e,l.environment,{feature:l.featureName,action:"updateEnabled",payload:{enabled:!!l.enabled,shouldActivateDisabledStrategies:!!l.shouldActivateDisabledStrategies}}),o(),u(h=>({...h,isOpen:!1})),s({type:"success",text:"Changes added to draft"})}catch(h){a(_(h)),u(r=>({...r,isOpen:!1}))}finally{n(!1)}},[c]);return{pending:i,onChangeRequestToggle:m,onChangeRequestToggleClose:f,onChangeRequestToggleConfirm:p,changeRequestDialogDetails:l}},Ot=({enabled:e,featureName:s,environment:a})=>t.jsxs(C,{"data-testid":"update-enabled-message",children:[t.jsx("strong",{children:e?"Enable":"Disable"})," feature flag"," ",t.jsx("strong",{children:s})," in ",t.jsx("strong",{children:a})]}),Ft=({isOpen:e,disabled:s=!1,onConfirm:a,onClose:c,showBanner:o,environment:i,messageComponent:n})=>{const l=B("projectId"),{data:u}=oe(l),{changeRequestInReviewOrApproved:m,alert:f}=Je(u),p=m(i||""),h=p?"Add to existing change request":"Add suggestion to draft";return t.jsxs(N,{open:e,primaryButtonText:h,secondaryButtonText:"Cancel",disabledPrimaryButton:s,onClick:a,onClose:c,title:"Request changes",fullWidth:!0,children:[t.jsx(D,{condition:p,show:f}),t.jsx(D,{condition:!!o,show:t.jsxs(Ye,{severity:"info",sx:{mb:2},children:["Change requests feature is enabled for ",i,". Your changes need to be approved before they will be live. All the changes you do now will be added into a draft that you can submit for review."]})}),t.jsx(C,{variant:"body2",color:"text.secondary",children:"Your suggestion:"}),n]})},_t=j("ul")(({theme:e})=>({margin:e.spacing(1),paddingLeft:e.spacing(2)})),Vt=({isOpen:e,onAddDefaultStrategy:s,onActivateDisabledStrategies:a,onClose:c,environment:o,featureId:i})=>{var f,p,h;const n=B("projectId"),{feature:l}=Ke(n,i),u=(h=(p=(f=l.environments)==null?void 0:f.find(({name:r})=>r===o))==null?void 0:p.strategies)==null?void 0:h.filter(({disabled:r})=>r).length,m=u?u===1?"1 disabled strategy":`${u} disabled strategies`:"disabled strategies";return t.jsxs(N,{open:e,secondaryButtonText:"Cancel",permissionButton:t.jsxs(t.Fragment,{children:[t.jsx(V,{type:"button",variant:"outlined",permission:H,projectId:n,environmentId:o,onClick:s,children:"Add default strategy"}),t.jsx(V,{type:"button",variant:"outlined",permission:H,projectId:n,environmentId:o,onClick:a,children:"Enable all strategies"})]}),onClose:c,title:`Enable feature flag in ${o}`,fullWidth:!0,children:[t.jsx(C,{sx:{mb:r=>r.spacing(3)},children:"A feature flag cannot be enabled without an enabled strategy."}),t.jsx(C,{children:"To enable this feature flag you can choose to:"}),t.jsxs(_t,{children:[t.jsx("li",{children:t.jsx(C,{children:t.jsx("strong",{children:"Add the default strategy"})})}),t.jsx("li",{children:t.jsxs(C,{children:[t.jsx("strong",{children:"Enable all the disabled strategies"})," ","(this feature flag has ",m,")"]})})]})]})},$t=e=>{const s=a=>{a<e.length&&e[a](()=>s(a+1))};s(0)},aa=e=>{const{toggleFeatureEnvironmentOn:s,toggleFeatureEnvironmentOff:a}=ie(),{setToastData:c,setToastApiError:o}=$(),[i,n]=x.useState({open:!1,label:"",loading:!1,onClose:()=>{},onClick:()=>{}}),[l,u]=x.useState({isOpen:!1,environment:"",featureId:"",onClose:()=>{},onActivateDisabledStrategies:()=>{},onAddDefaultStrategy:()=>{}}),{pending:m,onChangeRequestToggle:f,onChangeRequestToggleClose:p,onChangeRequestToggleConfirm:h,changeRequestDialogDetails:r}=Pt(e),[g,y]=x.useState(),b=x.useCallback(async(R,d)=>{let k=!1;return $t([T=>{if(d.isChangeRequestEnabled||!Xe(d.environmentType||""))return T();n({open:!0,label:`${R?"Enable":"Disable"} Environment`,loading:!1,onClose:()=>{var v;n(A=>({...A,open:!1})),(v=d.onRollback)==null||v.call(d)},onClick:()=>{n(v=>({...v,open:!1,loading:!0})),T()}})},T=>{if(R===!1||!d.hasStrategies||d.hasEnabledStrategies||d.hasReleasePlans)return T();u({isOpen:!0,environment:d.environmentName,featureId:d.featureId,onClose:()=>{var v;u(A=>({...A,isOpen:!1})),(v=d.onRollback)==null||v.call(d)},onActivateDisabledStrategies:()=>{u(v=>({...v,isOpen:!1})),k=!0,T()},onAddDefaultStrategy:()=>{u(v=>({...v,isOpen:!1})),T()}})},T=>{if(!d.isChangeRequestEnabled)return T();y(()=>{var v;y(void 0),(v=d.onRollback)==null||v.call(d)}),f(d.featureId,d.environmentName,R,k)},async T=>{var v,A;if(R!==!1)return T();try{await a(d.projectId,d.featureId,d.environmentName),c({type:"success",text:`Disabled in ${d.environmentName}`}),(v=d.onSuccess)==null||v.call(d)}catch(q){o(_(q)),(A=d.onRollback)==null||A.call(d)}},async T=>{var v,A;if(R!==!0)return T();try{await s(d.projectId,d.featureId,d.environmentName,k),c({type:"success",text:`Enabled in ${d.environmentName}`}),(v=d.onSuccess)==null||v.call(d)}catch(q){o(_(q)),(A=d.onRollback)==null||A.call(d)}}])},[n]),P=l.featureId.length!==0,O=t.jsxs(t.Fragment,{children:[t.jsx(Qe,{...i}),t.jsx(D,{condition:P,show:t.jsx(Vt,{...l})}),t.jsx(Ft,{isOpen:r.isOpen,onClose:()=>{g==null||g(),p()},environment:r==null?void 0:r.environment,disabled:m,onConfirm:()=>{g==null||g(),h()},messageComponent:t.jsx(Ot,{enabled:r==null?void 0:r.enabled,featureName:r==null?void 0:r.featureName,environment:r.environment})})]});return{onToggle:b,modals:O}},qt=e=>{const[s,a]=x.useState(e),c=x.useCallback(()=>a(e),[e]);return x.useEffect(()=>{a(e)},[e]),[s,a,c]},Bt=j(Ze)(()=>({mx:"auto",...et})),sa=({projectId:e,featureId:s,environmentName:a,value:c,onToggle:o})=>{const[i,n,l]=qt(c),u=()=>{n(!i),requestAnimationFrame(()=>{o(!i,l)})},m=`${s}-${a}`;return t.jsx(t.Fragment,{children:t.jsx(Bt,{"data-testid":`TOGGLE-${m}`,children:t.jsx(tt,{tooltip:i?`Disable flag in ${a}`:`Enable flag in ${a}`,checked:c,environmentId:a,projectId:e,permission:at,inputProps:{"aria-label":a},onClick:u,"data-testid":"permission-switch",disabled:c!==i})},m)})},na=e=>{const{data:s,error:a,mutate:c}=st(X(`api/admin/environments/project/${e}`),Nt),o=x.useMemo(()=>s||[],[s]),i=x.useCallback(async()=>{await c()},[c]);return{environments:o,refetchEnvironments:i,loading:!a&&!s,error:a}},Nt=async e=>(await fetch(e).then(Z("Environments")).then(a=>a.json())).environments.sort((a,c)=>a.sortOrder-c.sortOrder);var U={},Lt=Y;Object.defineProperty(U,"__esModule",{value:!0});var Ut=U.default=void 0,zt=Lt(W()),Mt=t,Ht=(0,zt.default)((0,Mt.jsx)("path",{d:"M16 11h-1V3c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v8H8c-2.76 0-5 2.24-5 5v7h18v-7c0-2.76-2.24-5-5-5zm3 10h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H9v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H5v-5c0-1.65 1.35-3 3-3h8c1.65 0 3 1.35 3 3v5z"}),"CleaningServices");Ut=U.default=Ht;const Gt="flag-reminders:v1",Wt=50,Yt=7,ra=({days:e=Yt,maxReminders:s=Wt}={})=>{const[a,c]=nt(Gt,{});return{shouldShowReminder:n=>{const l=a[n];return!l||rt(new Date,new Date(l))},snoozeReminder:(n,l=e)=>{const u=ot(new Date,l).getTime();c(m=>{const f={...m,[n]:u},p=Object.entries(f);if(p.length>s){p.sort((r,g)=>r[1]-g[1]);const h=p.slice(p.length-s);return Object.fromEntries(h)}return f})}}},oa=({isStale:e,isOpen:s,projectId:a,featureId:c,onClose:o})=>{const{setToastData:i,setToastApiError:n}=$(),{patchFeatureToggle:l}=ie(),u=t.jsx(C,{children:"Setting a flag to stale marks it for cleanup"}),m=t.jsx(C,{children:"Setting a flag to active marks it as in active use"}),f=e?"active":"stale",p=async h=>{h.stopPropagation();try{await l(a,c,[{op:"replace",path:"/stale",value:!e}]),o()}catch(r){n(_(r))}i(e?{type:"success",text:"The flag is no longer marked as stale"}:{type:"success",text:"The flag has been marked as stale"})};return t.jsx(N,{open:s,secondaryButtonText:"Cancel",primaryButtonText:`Flip to ${f}`,title:`Set feature state to ${f}`,onClick:p,onClose:o,children:t.jsx(D,{condition:e,show:m,elseShow:u})})};export{Ft as C,ea as E,sa as F,ta as L,Qt as T,Zt as a,Kt as b,vt as c,aa as d,Dt as e,na as f,ra as g,Ut as h,oa as i,Xt as u};
|