unleash-server 7.0.3 → 7.0.4

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 (225) hide show
  1. package/dist/lib/addons/slack-app-definition.js +6 -6
  2. package/dist/lib/addons/slack-app-definition.js.map +1 -1
  3. package/dist/lib/addons/slack-definition.js +2 -2
  4. package/dist/lib/addons/slack-definition.js.map +1 -1
  5. package/dist/lib/create-config.d.ts.map +1 -1
  6. package/dist/lib/create-config.js +3 -0
  7. package/dist/lib/create-config.js.map +1 -1
  8. package/dist/lib/db/client-instance-store.d.ts +0 -5
  9. package/dist/lib/db/client-instance-store.d.ts.map +1 -1
  10. package/dist/lib/db/client-instance-store.js +0 -21
  11. package/dist/lib/db/client-instance-store.js.map +1 -1
  12. package/dist/lib/db/event-store.d.ts +1 -1
  13. package/dist/lib/db/event-store.d.ts.map +1 -1
  14. package/dist/lib/db/event-store.js +1 -1
  15. package/dist/lib/db/event-store.js.map +1 -1
  16. package/dist/lib/db/index.js +1 -1
  17. package/dist/lib/db/index.js.map +1 -1
  18. package/dist/lib/db/transaction.d.ts +5 -1
  19. package/dist/lib/db/transaction.d.ts.map +1 -1
  20. package/dist/lib/db/transaction.js +10 -4
  21. package/dist/lib/db/transaction.js.map +1 -1
  22. package/dist/lib/db/transaction.test.d.ts +2 -0
  23. package/dist/lib/db/transaction.test.d.ts.map +1 -0
  24. package/dist/lib/db/transaction.test.js +161 -0
  25. package/dist/lib/db/transaction.test.js.map +1 -0
  26. package/dist/lib/events/index.d.ts +4 -1
  27. package/dist/lib/events/index.d.ts.map +1 -1
  28. package/dist/lib/events/index.js +2 -0
  29. package/dist/lib/events/index.js.map +1 -1
  30. package/dist/lib/features/client-feature-toggles/delta/createClientFeatureToggleDelta.js +1 -1
  31. package/dist/lib/features/client-feature-toggles/delta/createClientFeatureToggleDelta.js.map +1 -1
  32. package/dist/lib/features/events/createEventsService.js +1 -1
  33. package/dist/lib/features/events/createEventsService.js.map +1 -1
  34. package/dist/lib/features/events/event-created-by-migration.test.js +1 -1
  35. package/dist/lib/features/events/event-created-by-migration.test.js.map +1 -1
  36. package/dist/lib/features/events/event-service.d.ts.map +1 -1
  37. package/dist/lib/features/events/event-service.js +6 -1
  38. package/dist/lib/features/events/event-service.js.map +1 -1
  39. package/dist/lib/features/events/event-store.d.ts +3 -1
  40. package/dist/lib/features/events/event-store.d.ts.map +1 -1
  41. package/dist/lib/features/events/event-store.js +10 -3
  42. package/dist/lib/features/events/event-store.js.map +1 -1
  43. package/dist/lib/features/events/event-store.test.js +1 -1
  44. package/dist/lib/features/events/event-store.test.js.map +1 -1
  45. package/dist/lib/features/feature-lifecycle/createFeatureLifecycle.js +1 -1
  46. package/dist/lib/features/feature-lifecycle/createFeatureLifecycle.js.map +1 -1
  47. package/dist/lib/features/feature-links/feature-link-service.d.ts +2 -1
  48. package/dist/lib/features/feature-links/feature-link-service.d.ts.map +1 -1
  49. package/dist/lib/features/feature-links/feature-link-service.js +4 -1
  50. package/dist/lib/features/feature-links/feature-link-service.js.map +1 -1
  51. package/dist/lib/features/feature-links/feature-link-service.test.js +11 -0
  52. package/dist/lib/features/feature-links/feature-link-service.test.js.map +1 -1
  53. package/dist/lib/features/feature-links/feature-link.e2e.test.js +1 -7
  54. package/dist/lib/features/feature-links/feature-link.e2e.test.js.map +1 -1
  55. package/dist/lib/features/feature-toggle/feature-toggle-controller.d.ts.map +1 -1
  56. package/dist/lib/features/feature-toggle/feature-toggle-controller.js +0 -8
  57. package/dist/lib/features/feature-toggle/feature-toggle-controller.js.map +1 -1
  58. package/dist/lib/features/instance-stats/createInstanceStatsService.js +1 -1
  59. package/dist/lib/features/instance-stats/createInstanceStatsService.js.map +1 -1
  60. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.d.ts +3 -0
  61. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.d.ts.map +1 -1
  62. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.js +14 -1
  63. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.js.map +1 -1
  64. package/dist/lib/features/metrics/impact/define-impact-metrics.d.ts +7 -0
  65. package/dist/lib/features/metrics/impact/define-impact-metrics.d.ts.map +1 -0
  66. package/dist/lib/features/metrics/impact/define-impact-metrics.js +11 -0
  67. package/dist/lib/features/metrics/impact/define-impact-metrics.js.map +1 -0
  68. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.d.ts +2 -0
  69. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.d.ts.map +1 -0
  70. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js +131 -0
  71. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js.map +1 -0
  72. package/dist/lib/features/metrics/impact/metrics-translator.d.ts +2 -3
  73. package/dist/lib/features/metrics/impact/metrics-translator.d.ts.map +1 -1
  74. package/dist/lib/features/metrics/instance/instance-service.d.ts.map +1 -1
  75. package/dist/lib/features/metrics/instance/instance-service.js +6 -16
  76. package/dist/lib/features/metrics/instance/instance-service.js.map +1 -1
  77. package/dist/lib/features/metrics/instance/metrics.d.ts +2 -0
  78. package/dist/lib/features/metrics/instance/metrics.d.ts.map +1 -1
  79. package/dist/lib/features/metrics/instance/metrics.js +15 -4
  80. package/dist/lib/features/metrics/instance/metrics.js.map +1 -1
  81. package/dist/lib/features/metrics/shared/schema.d.ts +3 -0
  82. package/dist/lib/features/metrics/shared/schema.d.ts.map +1 -1
  83. package/dist/lib/features/metrics/shared/schema.js +23 -0
  84. package/dist/lib/features/metrics/shared/schema.js.map +1 -1
  85. package/dist/lib/features/personal-dashboard/createPersonalDashboardService.js +1 -1
  86. package/dist/lib/features/personal-dashboard/createPersonalDashboardService.js.map +1 -1
  87. package/dist/lib/features/private-project/privateProjectStore.d.ts.map +1 -1
  88. package/dist/lib/features/private-project/privateProjectStore.js +10 -0
  89. package/dist/lib/features/private-project/privateProjectStore.js.map +1 -1
  90. package/dist/lib/features/project/createProjectService.js +1 -1
  91. package/dist/lib/features/project/createProjectService.js.map +1 -1
  92. package/dist/lib/features/project-status/createProjectStatusService.js +1 -1
  93. package/dist/lib/features/project-status/createProjectStatusService.js.map +1 -1
  94. package/dist/lib/metrics.d.ts.map +1 -1
  95. package/dist/lib/metrics.js +2 -0
  96. package/dist/lib/metrics.js.map +1 -1
  97. package/dist/lib/middleware/request-logger.d.ts.map +1 -1
  98. package/dist/lib/middleware/request-logger.js +8 -0
  99. package/dist/lib/middleware/request-logger.js.map +1 -1
  100. package/dist/lib/openapi/spec/addon-type-schema.d.ts +4 -4
  101. package/dist/lib/openapi/spec/addon-type-schema.js +4 -4
  102. package/dist/lib/openapi/spec/addon-type-schema.js.map +1 -1
  103. package/dist/lib/openapi/spec/addons-schema.d.ts +4 -4
  104. package/dist/lib/openapi/spec/bulk-metrics-schema.d.ts +61 -0
  105. package/dist/lib/openapi/spec/bulk-metrics-schema.d.ts.map +1 -1
  106. package/dist/lib/openapi/spec/bulk-metrics-schema.js +9 -0
  107. package/dist/lib/openapi/spec/bulk-metrics-schema.js.map +1 -1
  108. package/dist/lib/openapi/spec/event-schema.d.ts +11 -1
  109. package/dist/lib/openapi/spec/event-schema.d.ts.map +1 -1
  110. package/dist/lib/openapi/spec/event-schema.js +10 -0
  111. package/dist/lib/openapi/spec/event-schema.js.map +1 -1
  112. package/dist/lib/openapi/spec/event-search-query-parameters.d.ts +18 -0
  113. package/dist/lib/openapi/spec/event-search-query-parameters.d.ts.map +1 -1
  114. package/dist/lib/openapi/spec/event-search-query-parameters.js +20 -0
  115. package/dist/lib/openapi/spec/event-search-query-parameters.js.map +1 -1
  116. package/dist/lib/openapi/spec/event-search-response-schema.d.ts +11 -1
  117. package/dist/lib/openapi/spec/event-search-response-schema.d.ts.map +1 -1
  118. package/dist/lib/openapi/spec/events-schema.d.ts +11 -1
  119. package/dist/lib/openapi/spec/events-schema.d.ts.map +1 -1
  120. package/dist/lib/openapi/spec/feature-events-schema.d.ts +11 -1
  121. package/dist/lib/openapi/spec/feature-events-schema.d.ts.map +1 -1
  122. package/dist/lib/openapi/spec/impact-metrics-schema.d.ts +57 -0
  123. package/dist/lib/openapi/spec/impact-metrics-schema.d.ts.map +1 -0
  124. package/dist/lib/openapi/spec/impact-metrics-schema.js +55 -0
  125. package/dist/lib/openapi/spec/impact-metrics-schema.js.map +1 -0
  126. package/dist/lib/openapi/spec/index.d.ts +1 -0
  127. package/dist/lib/openapi/spec/index.d.ts.map +1 -1
  128. package/dist/lib/openapi/spec/index.js +1 -0
  129. package/dist/lib/openapi/spec/index.js.map +1 -1
  130. package/dist/lib/openapi/spec/integration-event-schema.d.ts +11 -1
  131. package/dist/lib/openapi/spec/integration-event-schema.d.ts.map +1 -1
  132. package/dist/lib/openapi/spec/integration-events-schema.d.ts +22 -2
  133. package/dist/lib/openapi/spec/integration-events-schema.d.ts.map +1 -1
  134. package/dist/lib/server-impl.d.ts +1 -1
  135. package/dist/lib/server-impl.d.ts.map +1 -1
  136. package/dist/lib/server-impl.js +21 -14
  137. package/dist/lib/server-impl.js.map +1 -1
  138. package/dist/lib/services/email-service.d.ts +7 -0
  139. package/dist/lib/services/email-service.d.ts.map +1 -1
  140. package/dist/lib/services/email-service.js +35 -0
  141. package/dist/lib/services/email-service.js.map +1 -1
  142. package/dist/lib/types/experimental.d.ts +9 -1
  143. package/dist/lib/types/experimental.d.ts.map +1 -1
  144. package/dist/lib/types/experimental.js +3 -2
  145. package/dist/lib/types/experimental.js.map +1 -1
  146. package/dist/lib/types/option.d.ts +2 -0
  147. package/dist/lib/types/option.d.ts.map +1 -1
  148. package/dist/lib/types/stores/client-instance-store.d.ts +0 -5
  149. package/dist/lib/types/stores/client-instance-store.d.ts.map +1 -1
  150. package/dist/lib/types/stores/event-store.d.ts +3 -0
  151. package/dist/lib/types/stores/event-store.d.ts.map +1 -1
  152. package/dist/lib/util/flag-resolver.d.ts +2 -1
  153. package/dist/lib/util/flag-resolver.d.ts.map +1 -1
  154. package/dist/lib/util/flag-resolver.js +3 -0
  155. package/dist/lib/util/flag-resolver.js.map +1 -1
  156. package/dist/mailtemplates/requested-cr-approval/requested-cr-approval.html.mustache +39 -0
  157. package/dist/mailtemplates/requested-cr-approval/requested-cr-approval.plain.mustache +3 -0
  158. package/dist/migrations/20250618090103-create-cr-requested-approvals.d.ts +6 -0
  159. package/dist/migrations/20250618090103-create-cr-requested-approvals.d.ts.map +1 -0
  160. package/dist/migrations/20250618090103-create-cr-requested-approvals.js +19 -0
  161. package/dist/migrations/20250618090103-create-cr-requested-approvals.js.map +1 -0
  162. package/dist/migrations/20250623100820-cr-requested-approvals-add-notified-at-column.d.ts +3 -0
  163. package/dist/migrations/20250623100820-cr-requested-approvals-add-notified-at-column.d.ts.map +1 -0
  164. package/dist/migrations/20250623100820-cr-requested-approvals-add-notified-at-column.js +11 -0
  165. package/dist/migrations/20250623100820-cr-requested-approvals-add-notified-at-column.js.map +1 -0
  166. package/dist/migrations/20250630114145-add-transaction-context-to-events.d.ts +3 -0
  167. package/dist/migrations/20250630114145-add-transaction-context-to-events.d.ts.map +1 -0
  168. package/dist/migrations/20250630114145-add-transaction-context-to-events.js +16 -0
  169. package/dist/migrations/20250630114145-add-transaction-context-to-events.js.map +1 -0
  170. package/dist/migrator.d.ts +1 -0
  171. package/dist/migrator.d.ts.map +1 -1
  172. package/dist/migrator.js +17 -0
  173. package/dist/migrator.js.map +1 -1
  174. package/dist/server-dev.js +4 -0
  175. package/dist/server-dev.js.map +1 -1
  176. package/dist/test/e2e/api/admin/event-search.e2e.test.js +175 -0
  177. package/dist/test/e2e/api/admin/event-search.e2e.test.js.map +1 -1
  178. package/dist/test/e2e/stores/event-store.e2e.test.js +224 -0
  179. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  180. package/dist/test/fixtures/fake-client-instance-store.d.ts +0 -1
  181. package/dist/test/fixtures/fake-client-instance-store.d.ts.map +1 -1
  182. package/dist/test/fixtures/fake-client-instance-store.js +0 -3
  183. package/dist/test/fixtures/fake-client-instance-store.js.map +1 -1
  184. package/dist/test/fixtures/fake-impact-metrics.d.ts +15 -0
  185. package/dist/test/fixtures/fake-impact-metrics.d.ts.map +1 -0
  186. package/dist/test/fixtures/fake-impact-metrics.js +27 -0
  187. package/dist/test/fixtures/fake-impact-metrics.js.map +1 -0
  188. package/frontend/build/index.html +1 -1
  189. package/frontend/build/static/AdvancedPlayground-D-6uZDZr.js +3 -0
  190. package/frontend/build/static/BackendConnections-C-DXtgIJ.js +1 -0
  191. package/frontend/build/static/{CreateProject-9XUQN1SU.js → CreateProject-C8ofwZq1.js} +1 -1
  192. package/frontend/build/static/FeatureMetricsChart-uzxl5gXR.js +2 -0
  193. package/frontend/build/static/{FeatureStaleDialog-Q5amMPCM.js → FeatureStaleDialog-BKCmTzFV.js} +2 -2
  194. package/frontend/build/static/FeatureViewLazyExport-CobGy6XS.js +10 -0
  195. package/frontend/build/static/{FlagMetricsChart-d-DcBEd3.js → FlagMetricsChart-VYTYbbQS.js} +2 -2
  196. package/frontend/build/static/FrontendNetworkTrafficUsage-CFIzAiX3.js +1 -0
  197. package/frontend/build/static/{LazyAdminExport-6l0-2zFb.js → LazyAdminExport-CRoU3u-1.js} +12 -12
  198. package/frontend/build/static/{LazyProjectExport-CPe5in4-.js → LazyProjectExport-DwhYVXhl.js} +35 -35
  199. package/frontend/build/static/{LifecycleChartComponent-B2yYCoKI.js → LifecycleChartComponent-CqpS04x5.js} +2 -2
  200. package/frontend/build/static/{LineChartComponent-D27zBmU-.js → LineChartComponent-B4SCTZZg.js} +1 -1
  201. package/frontend/build/static/MarkCompletedDialogue-BKJahqUx.js +1 -0
  202. package/frontend/build/static/{NetworkConnectedEdges-1WVw8Eu8.js → NetworkConnectedEdges-Ki1G9nG8.js} +1 -1
  203. package/frontend/build/static/{NetworkOverview-CVDK-eSI.js → NetworkOverview-CDZIrvNW.js} +1 -1
  204. package/frontend/build/static/{NetworkPrometheusAPIWarning-DmpG0G0j.js → NetworkPrometheusAPIWarning-DPJmw0yM.js} +1 -1
  205. package/frontend/build/static/{NetworkTraffic-CyPjdgMv.js → NetworkTraffic-Sq_m8XpD.js} +1 -1
  206. package/frontend/build/static/{NetworkTrafficUsage-C8VwLm0h.js → NetworkTrafficUsage-D8jRHO10.js} +1 -1
  207. package/frontend/build/static/{ReactJSONEditor-DseXcTHD.js → ReactJSONEditor-BCSMMPUN.js} +32 -32
  208. package/frontend/build/static/RoleCell-ndjYcZ1T.js +1 -0
  209. package/frontend/build/static/{aggregateFeatureMetrics-COQ_COHJ.js → aggregateFeatureMetrics-CFI2n6i7.js} +1 -1
  210. package/frontend/build/static/{formatTickValue-D_CAvIVf.js → formatTickValue-D9avlj7O.js} +2 -2
  211. package/frontend/build/static/{index-CKXZ0XnY.js → index-Bj8wwcOa.js} +10 -10
  212. package/frontend/build/static/index-DvDCZTAu.js +538 -0
  213. package/frontend/build/static/useApiTokens-BZGgHseg.js +1 -0
  214. package/frontend/build/static/{useChartDataSelection-BfTrFKbU.js → useChartDataSelection-OwfBPL7x.js} +1 -1
  215. package/frontend/package.json +10 -10
  216. package/package.json +13 -13
  217. package/frontend/build/static/AdvancedPlayground-BoqY20Mb.js +0 -3
  218. package/frontend/build/static/BackendConnections-BspEzNo_.js +0 -1
  219. package/frontend/build/static/FeatureMetricsChart-LENYZ5kx.js +0 -2
  220. package/frontend/build/static/FeatureViewLazyExport-BU9aw-MC.js +0 -10
  221. package/frontend/build/static/FrontendNetworkTrafficUsage-7YK-sjpZ.js +0 -1
  222. package/frontend/build/static/MarkCompletedDialogue-SyWeA6AL.js +0 -1
  223. package/frontend/build/static/RoleCell-DJbKzxr1.js +0 -4
  224. package/frontend/build/static/index-Yy9_7TKN.js +0 -535
  225. package/frontend/build/static/useApiTokens-DE54gK5i.js +0 -1
@@ -0,0 +1 @@
1
+ import{b9 as i,ch as p,r as n,bb as h}from"./index-DvDCZTAu.js";const k=(s={})=>{const a=i("api/admin/api-tokens"),{data:t,error:e,mutate:o}=p(a,u,s),r=n.useMemo(()=>t??[],[t]),c=n.useCallback(()=>{o().catch(console.warn)},[o]);return{tokens:r,error:e,loading:!e&&!t,refetch:c}},u=async s=>(await(await fetch(s).then(h("Api tokens"))).json()).tokens;export{k as u};
@@ -1 +1 @@
1
- import{G as z,H as N,j as i,e5 as L,jh as P,e3 as W,s as d,i as G,J,r as u,e2 as B,B as H,h4 as V,ji as O,jj as M,jk as X,cL as Y,e6 as j,cg as I,b9 as T,bb as A,e0 as K,d6 as Q,b as Z,bs as tt}from"./index-Yy9_7TKN.js";import{a as g,f,T as et,p as C,b,d as ot,c as at,u as rt,B as nt,e as st,g as lt,h as ct}from"./LazyAdminExport-6l0-2zFb.js";import{f as it}from"./formatTickValue-D_CAvIVf.js";const Ut=(t=34)=>({id:"customLine",beforeDraw:e=>{var r,o,a,n;if((r=e.tooltip)!=null&&r.opacity&&e.tooltip.x){const s=e.tooltip.caretX,l=e.scales.y,c=e.ctx;c.save();const p=c.createLinearGradient(s,l.top,s,l.bottom+34);p.addColorStop(0,"rgba(129, 122, 254, 0)"),p.addColorStop(1,"rgba(129, 122, 254, 0.12)"),c.fillStyle=p;const h=e.width/(((o=e.data.labels)==null?void 0:o.length)??1)*(((n=(a=e.options.datasets)==null?void 0:a.bar)==null?void 0:n.categoryPercentage)??1);c.roundRect(s-h/2,l.top,h,l.bottom-l.top+t,5),c.fill(),c.restore()}}});var x={},dt=N;Object.defineProperty(x,"__esModule",{value:!0});var $=x.default=void 0,ut=dt(z()),pt=i,gt=(0,ut.default)((0,pt.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");$=x.default=gt;const w=(t,e,r=!0)=>{const o=t.getFullYear(),a=t.getMonth(),n=f(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}},ht=t=>{const e=[w(t,"Current month")],r=L(t);for(let o=1;o<12;o++){const a=P(r,o);e.push(w(a,void 0,a>=et))}return e},S=ht(g),bt=Object.fromEntries(S.map(t=>[t.key,t])),q="15rem",v=t=>t.spacing(3),F=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}})),mt=d(F)(({theme:t})=>({":disabled":{cursor:"default",color:t.palette.text.disabled}})),yt=d(F)(({theme:t})=>({width:"100%",paddingBlock:t.spacing(1),textAlign:"left",borderRadius:0,paddingInline:v(t)})),ft=d(G)(({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"})),Ct=d("article")(({theme:t})=>({width:q,paddingBlock:t.spacing(2),display:"flex",flexFlow:"column",gap:t.spacing(2)})),xt=d("article")(({theme:t})=>({paddingInline:v(t)})),St=d("hgroup")(({theme:t})=>({h3:{margin:0,fontSize:t.typography.h3.fontSize},p:{color:t.palette.text.secondary,fontSize:t.typography.body2.fontSize}})),vt=d("ul")(({theme:t})=>({listStyle:"none",padding:0,display:"grid",gridTemplateColumns:"repeat(4, 1fr)",rowGap:t.spacing(1)})),Dt=d("article")(({theme:t})=>({display:"flex",width:"100%",flexFlow:"column",gap:t.spacing(.5)})),Rt=d("p")(({theme:t})=>({paddingInline:v(t),fontSize:t.typography.body2.fontSize,margin:0,color:t.palette.text.secondary,fontWeight:"bold"})),Mt=d("ul")(({theme:t})=>({listStyle:"none",margin:0,padding:0,width:"100%",li:{width:"100%"}})),jt=d(J)(({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":C(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"}):`Last ${t.monthsBack} months`;return i.jsxs(H,{ref:n,children:[i.jsx(ft,{endIcon:o?i.jsx($,{}):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(Ct,{children:[i.jsxs(xt,{children:[i.jsxs(St,{children:[i.jsx("h3",{children:"Select month"}),i.jsx("p",{children:"Last 12 months"})]}),i.jsx(vt,{children:S.map(c=>i.jsx("li",{children:i.jsx(mt,{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(Dt,{children:[i.jsx(Rt,{children:"Range"}),i.jsx(Mt,{children:r.map(c=>i.jsx("li",{children:i.jsxs(yt,{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}},wt=(t,e)=>{const{newRecord:r,labels:o}=D(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}},kt=t=>{const{newRecord:e,labels:r}=D(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}},Lt=t=>{const{newRecord:e,labels:r}=D(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}},D=t=>{if(t.grouping==="monthly"){const e=b(t.dateRange.from),r=b(t.dateRange.to),o=Math.abs(O(r,e))+1,a={};for(let s=0;s<o;s++)a[f(M(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>l===o-1?"Current month":f(M(e,l)));return{newRecord:()=>({...a}),labels:n}}else{const e=b(t.dateRange.from),r=b(t.dateRange.to),o=Math.abs(X(r,e))+1,a={};for(let s=0;s<o;s++)a[ot(Y(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>(l+1).toString());return{newRecord:()=>({...a}),labels:n}}},[Pt,...Bt]=Object.values(m).map(t=>t.label.toLowerCase()).toReversed(),k=`${Bt.toReversed().join(", ")}, and ${Pt}`,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 ${k} requests.`:`A bar chart showing monthly total traffic usage for the current month and the preceding ${t.monthsBack} months. Each month shows ${k} requests.`,R=(t,e=new Date)=>{const r=o=>B(o,"yyyy-MM-dd");if(t.grouping==="daily"){const o=C(t.month),a=r(o),n=r(j(o));return{from:a,to:n}}else{const o=r(L(P(e,t.monthsBack))),a=r(j(e));return{from:o,to:a}}},Ot=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!==at).reduce((a,n)=>a+n.trafficTypes[0].count,0)).reduce((o,a)=>o+a,0);return Math.round(r/e)},It=(t,{from:e,to:r})=>{const o=`api/admin/metrics/connection?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=I(T(o),Tt);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},Tt=t=>fetch(t).then(A("Metered Connections Metrics")).then(e=>e.json()),At=(t,{from:e,to:r})=>{const o=`api/admin/metrics/request?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=I(T(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(A("Consumption Requests Metrics")).then(e=>e.json()),Wt=(t,e,r)=>{var l,c;const{result:o}=rt(e.grouping,R(e,g)),{instanceStatus:a}=K(),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)??nt;return u.useMemo(()=>{if(o.state!=="success")return{chartData:{datasets:[],labels:[]},usageTotal:0,overageCost:0,estimatedMonthlyCost:0,requestSummaryUsage:0};const p=o.data,h=wt(p),y=st(p),E=lt(y,t,n),_=ct(p.apiData,t,g,n),U=e.grouping==="daily"?y:Ot(p);return{chartData:h,usageTotal:y,overageCost:E,estimatedMonthlyCost:_,requestSummaryUsage:U}},[JSON.stringify(o),t,JSON.stringify(e),n])},Gt=t=>{const{result:e}=It(t.grouping,R(t,g));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:kt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Jt=t=>{const{result:e}=At(t.grouping,R(t,g));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:Lt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Ht=d(Q)(({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"})),Xt=d("span")(({theme:t})=>({fontWeight:"bold"})),qt=(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:it},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:S[0].key}),n=u.useMemo(()=>qt(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=C(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}};export{Xt as B,zt as P,Ht as S,Vt as T,Wt as a,Gt as b,Ut as c,Jt as d,Nt as g,Yt as u};
1
+ import{G as z,H as N,j as i,e6 as P,jk as B,e4 as W,s as d,i as G,J,r as u,e3 as L,B as H,h6 as V,jl as O,jm as M,jn as X,cM as Y,e7 as w,ch as I,b9 as T,bb as A,e1 as K,d7 as Q,b as Z,bs as tt}from"./index-DvDCZTAu.js";import{a as g,f,T as et,p as C,b,d as ot,c as at,u as rt,B as nt,e as st,g as lt,h as ct}from"./LazyAdminExport-CRoU3u-1.js";import{f as it}from"./formatTickValue-D9avlj7O.js";const Ut=(t=34)=>({id:"customLine",beforeDraw:e=>{var r,o,a,n;if((r=e.tooltip)!=null&&r.opacity&&e.tooltip.x){const s=e.tooltip.caretX,l=e.scales.y,c=e.ctx;c.save();const p=c.createLinearGradient(s,l.top,s,l.bottom+34);p.addColorStop(0,"rgba(129, 122, 254, 0)"),p.addColorStop(1,"rgba(129, 122, 254, 0.12)"),c.fillStyle=p;const h=e.width/(((o=e.data.labels)==null?void 0:o.length)??1)*(((n=(a=e.options.datasets)==null?void 0:a.bar)==null?void 0:n.categoryPercentage)??1);c.roundRect(s-h/2,l.top,h,l.bottom-l.top+t,5),c.fill(),c.restore()}}});var x={},dt=N;Object.defineProperty(x,"__esModule",{value:!0});var $=x.default=void 0,ut=dt(z()),pt=i,gt=(0,ut.default)((0,pt.jsx)("path",{d:"m7 14 5-5 5 5z"}),"ArrowDropUp");$=x.default=gt;const j=(t,e,r=!0)=>{const o=t.getFullYear(),a=t.getMonth(),n=f(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}},ht=t=>{const e=[j(t,"Current month")],r=P(t);for(let o=1;o<12;o++){const a=B(r,o);e.push(j(a,void 0,a>=et))}return e},S=ht(g),bt=Object.fromEntries(S.map(t=>[t.key,t])),q="15rem",v=t=>t.spacing(3),F=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}})),mt=d(F)(({theme:t})=>({":disabled":{cursor:"default",color:t.palette.text.disabled}})),yt=d(F)(({theme:t})=>({width:"100%",paddingBlock:t.spacing(1),textAlign:"left",borderRadius:0,paddingInline:v(t)})),ft=d(G)(({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"})),Ct=d("article")(({theme:t})=>({width:q,paddingBlock:t.spacing(2),display:"flex",flexFlow:"column",gap:t.spacing(2)})),xt=d("article")(({theme:t})=>({paddingInline:v(t)})),St=d("hgroup")(({theme:t})=>({h3:{margin:0,fontSize:t.typography.h3.fontSize},p:{color:t.palette.text.secondary,fontSize:t.typography.body2.fontSize}})),vt=d("ul")(({theme:t})=>({listStyle:"none",padding:0,display:"grid",gridTemplateColumns:"repeat(4, 1fr)",rowGap:t.spacing(1)})),Dt=d("article")(({theme:t})=>({display:"flex",width:"100%",flexFlow:"column",gap:t.spacing(.5)})),Rt=d("p")(({theme:t})=>({paddingInline:v(t),fontSize:t.typography.body2.fontSize,margin:0,color:t.palette.text.secondary,fontWeight:"bold"})),Mt=d("ul")(({theme:t})=>({listStyle:"none",margin:0,padding:0,width:"100%",li:{width:"100%"}})),wt=d(J)(({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===L(new Date,"yyyy-MM")?"Current month":C(t.month).toLocaleDateString("en-US",{month:"long",year:"numeric"}):`Last ${t.monthsBack} months`;return i.jsxs(H,{ref:n,children:[i.jsx(ft,{endIcon:o?i.jsx($,{}):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(Ct,{children:[i.jsxs(xt,{children:[i.jsxs(St,{children:[i.jsx("h3",{children:"Select month"}),i.jsx("p",{children:"Last 12 months"})]}),i.jsx(vt,{children:S.map(c=>i.jsx("li",{children:i.jsx(mt,{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(Dt,{children:[i.jsx(Rt,{children:"Range"}),i.jsx(Mt,{children:r.map(c=>i.jsx("li",{children:i.jsxs(yt,{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}},jt=(t,e)=>{const{newRecord:r,labels:o}=D(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}},kt=t=>{const{newRecord:e,labels:r}=D(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}=D(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}},D=t=>{if(t.grouping==="monthly"){const e=b(t.dateRange.from),r=b(t.dateRange.to),o=Math.abs(O(r,e))+1,a={};for(let s=0;s<o;s++)a[f(M(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>l===o-1?"Current month":f(M(e,l)));return{newRecord:()=>({...a}),labels:n}}else{const e=b(t.dateRange.from),r=b(t.dateRange.to),o=Math.abs(X(r,e))+1,a={};for(let s=0;s<o;s++)a[ot(Y(e,s))]=0;const n=Array.from({length:o}).map((s,l)=>(l+1).toString());return{newRecord:()=>({...a}),labels:n}}},[Bt,...Lt]=Object.values(m).map(t=>t.label.toLowerCase()).toReversed(),k=`${Lt.toReversed().join(", ")}, and ${Bt}`,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 ${k} requests.`:`A bar chart showing monthly total traffic usage for the current month and the preceding ${t.monthsBack} months. Each month shows ${k} requests.`,R=(t,e=new Date)=>{const r=o=>L(o,"yyyy-MM-dd");if(t.grouping==="daily"){const o=C(t.month),a=r(o),n=r(w(o));return{from:a,to:n}}else{const o=r(P(B(e,t.monthsBack))),a=r(w(e));return{from:o,to:a}}},Ot=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!==at).reduce((a,n)=>a+n.trafficTypes[0].count,0)).reduce((o,a)=>o+a,0);return Math.round(r/e)},It=(t,{from:e,to:r})=>{const o=`api/admin/metrics/connection?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=I(T(o),Tt);return u.useMemo(()=>({refetch:()=>s(),result:a?{state:"success",data:a}:n?{state:"error",error:n}:{state:"loading"}}),[a,n,s])},Tt=t=>fetch(t).then(A("Metered Connections Metrics")).then(e=>e.json()),At=(t,{from:e,to:r})=>{const o=`api/admin/metrics/request?grouping=${t}&from=${e}&to=${r}`,{data:a,error:n,mutate:s}=I(T(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(A("Consumption Requests Metrics")).then(e=>e.json()),Wt=(t,e,r)=>{var l,c;const{result:o}=rt(e.grouping,R(e,g)),{instanceStatus:a}=K(),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)??nt;return u.useMemo(()=>{if(o.state!=="success")return{chartData:{datasets:[],labels:[]},usageTotal:0,overageCost:0,estimatedMonthlyCost:0,requestSummaryUsage:0};const p=o.data,h=jt(p),y=st(p),E=lt(y,t,n),_=ct(p.apiData,t,g,n),U=e.grouping==="daily"?y:Ot(p);return{chartData:h,usageTotal:y,overageCost:E,estimatedMonthlyCost:_,requestSummaryUsage:U}},[JSON.stringify(o),t,JSON.stringify(e),n])},Gt=t=>{const{result:e}=It(t.grouping,R(t,g));return u.useMemo(()=>{if(e.state!=="success")return{chartData:{datasets:[],labels:[]}};const o=e.data;return{chartData:kt(o)}},[JSON.stringify(e),JSON.stringify(t)])},Jt=t=>{const{result:e}=At(t.grouping,R(t,g));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(Q)(({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"})),Xt=d("span")(({theme:t})=>({fontWeight:"bold"})),qt=(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:it},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:S[0].key}),n=u.useMemo(()=>qt(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=C(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}};export{Xt as B,zt as P,Ht as S,Vt as T,Wt as a,Gt as b,Ut as c,Jt as d,Nt as g,Yt as u};
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "devDependencies": {
39
39
  "@biomejs/biome": "1.9.4",
40
- "@codemirror/lang-json": "6.0.1",
40
+ "@codemirror/lang-json": "6.0.2",
41
41
  "@emotion/react": "11.11.4",
42
42
  "@emotion/styled": "11.11.5",
43
43
  "@mui/icons-material": "5.15.3",
@@ -59,15 +59,15 @@
59
59
  "@types/lodash.mapvalues": "^4.6.9",
60
60
  "@types/lodash.omit": "4.5.9",
61
61
  "@types/node": "^22.0.0",
62
- "@types/react": "18.3.18",
63
- "@types/react-dom": "18.3.5",
62
+ "@types/react": "18.3.23",
63
+ "@types/react-dom": "18.3.7",
64
64
  "@types/react-router-dom": "5.3.3",
65
65
  "@types/react-table": "7.7.20",
66
66
  "@types/react-test-renderer": "18.3.1",
67
- "@types/semver": "7.5.8",
67
+ "@types/semver": "7.7.0",
68
68
  "@types/uuid": "^9.0.0",
69
- "@uiw/codemirror-theme-duotone": "4.23.10",
70
- "@uiw/react-codemirror": "4.23.10",
69
+ "@uiw/codemirror-theme-duotone": "4.23.13",
70
+ "@uiw/react-codemirror": "4.23.13",
71
71
  "@unleash/proxy-client-react": "^5.0.0",
72
72
  "@vitejs/plugin-react": "4.3.4",
73
73
  "cartesian": "^1.0.1",
@@ -114,9 +114,9 @@
114
114
  "react-table": "7.8.0",
115
115
  "react-test-renderer": "18.3.1",
116
116
  "sass": "1.85.1",
117
- "semver": "7.7.1",
117
+ "semver": "7.7.2",
118
118
  "swr": "2.3.3",
119
- "tss-react": "4.9.15",
119
+ "tss-react": "4.9.18",
120
120
  "typescript": "5.8.3",
121
121
  "unleash-proxy-client": "^3.7.3",
122
122
  "use-query-params": "^2.2.1",
@@ -134,9 +134,9 @@
134
134
  "jsonpath-plus": "10.3.0",
135
135
  "json5": "^2.2.2",
136
136
  "vite": "5.4.19",
137
- "semver": "7.7.1",
137
+ "semver": "7.7.2",
138
138
  "ws": "^8.18.0",
139
- "@types/react": "18.3.18"
139
+ "@types/react": "18.3.23"
140
140
  },
141
141
  "jest": {
142
142
  "moduleNameMapper": {
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.0.3",
5
+ "version": "7.0.4",
6
6
  "keywords": [
7
7
  "unleash",
8
8
  "feature flag",
@@ -127,10 +127,10 @@
127
127
  "stoppable": "^1.1.0",
128
128
  "tldts": "7.0.6",
129
129
  "ts-toolbelt": "^9.6.0",
130
- "type-is": "^1.6.18",
130
+ "type-is": "^2.0.0",
131
131
  "ulidx": "^2.4.1",
132
- "unleash-client": "^6.6.0",
133
- "uuid": "^9.0.0"
132
+ "unleash-client": "^6.7.0-beta.0",
133
+ "uuid": "^11.0.0"
134
134
  },
135
135
  "devDependencies": {
136
136
  "@apidevtools/swagger-parser": "10.1.1",
@@ -141,25 +141,25 @@
141
141
  "@swc/core": "1.11.31",
142
142
  "@types/bcryptjs": "2.4.6",
143
143
  "@types/cors": "2.8.19",
144
- "@types/express": "4.17.21",
145
- "@types/express-session": "1.18.1",
144
+ "@types/express": "4.17.23",
145
+ "@types/express-session": "1.18.2",
146
146
  "@types/faker": "5.5.9",
147
147
  "@types/hash-sum": "^1.0.0",
148
148
  "@types/js-yaml": "4.0.9",
149
149
  "@types/lodash.groupby": "4.6.9",
150
150
  "@types/lodash.isequal": "^4.5.8",
151
- "@types/memoizee": "0.4.11",
151
+ "@types/memoizee": "0.4.12",
152
152
  "@types/mime": "4.0.0",
153
153
  "@types/murmurhash3js": "^3.0.7",
154
154
  "@types/mustache": "^4.2.5",
155
155
  "@types/node": "22.15.18",
156
156
  "@types/nodemailer": "6.4.17",
157
157
  "@types/owasp-password-strength-test": "1.3.2",
158
- "@types/pg": "8.15.2",
159
- "@types/semver": "7.5.8",
158
+ "@types/pg": "8.15.4",
159
+ "@types/semver": "7.7.0",
160
160
  "@types/slug": "^5.0.8",
161
161
  "@types/stoppable": "1.1.3",
162
- "@types/supertest": "6.0.2",
162
+ "@types/supertest": "6.0.3",
163
163
  "@types/type-is": "1.6.7",
164
164
  "@types/uuid": "9.0.8",
165
165
  "@vitest/coverage-v8": "^3.1.3",
@@ -167,7 +167,7 @@
167
167
  "concurrently": "^9.0.0",
168
168
  "copyfiles": "2.4.1",
169
169
  "coveralls": "^3.1.1",
170
- "del-cli": "5.1.0",
170
+ "del-cli": "6.0.0",
171
171
  "faker": "5.5.3",
172
172
  "fast-check": "3.23.2",
173
173
  "fetch-mock": "^12.0.0",
@@ -177,10 +177,10 @@
177
177
  "openapi-enforcer": "1.23.0",
178
178
  "proxyquire": "2.1.3",
179
179
  "source-map-support": "0.5.21",
180
- "superagent": "10.2.0",
180
+ "superagent": "10.2.1",
181
181
  "supertest": "7.0.0",
182
182
  "ts-node": "10.9.2",
183
- "tsc-watch": "6.2.1",
183
+ "tsc-watch": "7.1.1",
184
184
  "typescript": "5.8.3",
185
185
  "vite-node": "^3.1.3",
186
186
  "vitest": "^3.1.3",
@@ -1,3 +0,0 @@
1
- import{u as Et,g as Tt,r as g,_ as It,j as t,a as xe,s as E,U as Pt,b as N,B as k,C as L,d as Rt,c as Ot,e as Ue,f as Bt,h as Z,T as $,F as Ft,I as Lt,S as Nt,M as At,i as se,p as Ee,k as Te,l as te,A as Ge,m as $t,n as Dt,o as Wt,q as Ht,t as zt,v as Mt,w as Ut,x as Gt,y as Ie,P as _t,z as Pe,D as G,L as Vt,E as qt,G as _e,H as Ve,J as X,K as Kt,N as qe,O as oe,Q as Ke,R as Jt,V as Q,W as me,X as Yt,Y as Zt,Z as Qt,$ as Je,a0 as re,a1 as Xt,a2 as en,a3 as tn,a4 as nn,a5 as rn,a6 as an,a7 as sn,a8 as on,a9 as ln,aa as cn,ab as dn,ac as B,ad as ie,ae as un,af as hn,ag as gn,ah as fn,ai as mn,aj as pn,ak as Re,al as Ye,am as ye,an as be,ao as Ze,ap as ve,aq as Qe,ar as Xe,as as et,at as tt,au as xn,av as Oe,aw as yn,ax as bn,ay as de,az as vn,aA as jn,aB as Cn,aC as Sn,aD as kn,aE as wn,aF as En}from"./index-Yy9_7TKN.js";import{c as Tn,d as In,s as Pn,h as Rn,f as On,a as Bn,l as Fn,b as Ln,e as Nn,g as An,i as $n,j as Dn,k as Wn,m as Hn,E as ae,n as zn,o as je,p as Mn,q as Un,r as Gn,t as _n,u as Vn,v as qn,w as Kn,x as Jn,y as Yn,z as nt,A as U,H as rt,B as i,C as Zn,D as Qn,S as Xn,F as er,G as tr}from"./index-CKXZ0XnY.js";import{u as nr}from"./useApiTokens-DE54gK5i.js";const rr=()=>{const{makeRequest:e,createRequest:n,errors:r,loading:a}=Et({propagateErrors:!0}),s="api/admin/playground";return{evaluateAdvancedPlayground:async l=>{const u=`${s}/advanced`,f=n(u,{method:"POST",body:JSON.stringify(l)});return(await e(f.caller,f.id)).json()},evaluateChangeRequestPlayground:async(l,u)=>{const f=`${s}/change-request/${l}`,o=n(f,{method:"POST",body:JSON.stringify(u)});return(await e(o.caller,o.id)).json()},errors:r,loading:a}};var Ce={exports:{}};function at(e,n=100,r={}){if(typeof e!="function")throw new TypeError(`Expected the first parameter to be a function, got \`${typeof e}\`.`);if(n<0)throw new RangeError("`wait` must not be negative.");const{immediate:a}=typeof r=="boolean"?{immediate:r}:r;let s,c,d,l,u;function f(){const h=s,b=c;return s=void 0,c=void 0,u=e.apply(h,b),u}function o(){const h=Date.now()-l;h<n&&h>=0?d=setTimeout(o,n-h):(d=void 0,a||(u=f()))}const m=function(...h){if(s&&this!==s&&Object.getPrototypeOf(this)===Object.getPrototypeOf(s))throw new Error("Debounced method called with different contexts of the same prototype.");s=this,c=h,l=Date.now();const b=a&&!d;return d||(d=setTimeout(o,n)),b&&(u=f()),u};return Object.defineProperty(m,"isPending",{get(){return d!==void 0}}),m.clear=()=>{d&&(clearTimeout(d),d=void 0)},m.flush=()=>{d&&m.trigger()},m.trigger=()=>{u=f(),m.clear()},m}Ce.exports.debounce=at;Ce.exports=at;var ar=Ce.exports;const sr=Tt(ar);var Be=function(n){n===void 0&&(n={});var{crosshairCursor:r=!1}=n,a=[];n.closeBracketsKeymap!==!1&&(a=a.concat(Tn)),n.defaultKeymap!==!1&&(a=a.concat(In)),n.searchKeymap!==!1&&(a=a.concat(Pn)),n.historyKeymap!==!1&&(a=a.concat(Rn)),n.foldKeymap!==!1&&(a=a.concat(On)),n.completionKeymap!==!1&&(a=a.concat(Bn)),n.lintKeymap!==!1&&(a=a.concat(Fn));var s=[];return n.lineNumbers!==!1&&s.push(Ln()),n.highlightActiveLineGutter!==!1&&s.push(Nn()),n.highlightSpecialChars!==!1&&s.push(An()),n.history!==!1&&s.push($n()),n.foldGutter!==!1&&s.push(Dn()),n.drawSelection!==!1&&s.push(Wn()),n.dropCursor!==!1&&s.push(Hn()),n.allowMultipleSelections!==!1&&s.push(ae.allowMultipleSelections.of(!0)),n.indentOnInput!==!1&&s.push(zn()),n.syntaxHighlighting!==!1&&s.push(je(Mn,{fallback:!0})),n.bracketMatching!==!1&&s.push(Un()),n.closeBrackets!==!1&&s.push(Gn()),n.autocompletion!==!1&&s.push(_n()),n.rectangularSelection!==!1&&s.push(Vn()),r!==!1&&s.push(qn()),n.highlightActiveLine!==!1&&s.push(Kn()),n.highlightSelectionMatches!==!1&&s.push(Jn()),n.tabSize&&typeof n.tabSize=="number"&&s.push(Yn.of(" ".repeat(n.tabSize))),s.concat([nt.of(a.flat())]).filter(Boolean)};const or="#e5c07b",Fe="#e06c75",ir="#56b6c2",lr="#ffffff",ne="#abb2bf",pe="#7d8799",cr="#61afef",dr="#98c379",Le="#d19a66",ur="#c678dd",hr="#21252b",Ne="#2c313a",Ae="#282c34",ue="#353a42",gr="#3E4451",$e="#528bff",fr=U.theme({"&":{color:ne,backgroundColor:Ae},".cm-content":{caretColor:$e},".cm-cursor, .cm-dropCursor":{borderLeftColor:$e},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:gr},".cm-panels":{backgroundColor:hr,color:ne},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Ae,color:pe,border:"none"},".cm-activeLineGutter":{backgroundColor:Ne},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:ue},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:ue,borderBottomColor:ue},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ne,color:ne}}},{dark:!0}),mr=rt.define([{tag:i.keyword,color:ur},{tag:[i.name,i.deleted,i.character,i.propertyName,i.macroName],color:Fe},{tag:[i.function(i.variableName),i.labelName],color:cr},{tag:[i.color,i.constant(i.name),i.standard(i.name)],color:Le},{tag:[i.definition(i.name),i.separator],color:ne},{tag:[i.typeName,i.className,i.number,i.changed,i.annotation,i.modifier,i.self,i.namespace],color:or},{tag:[i.operator,i.operatorKeyword,i.url,i.escape,i.regexp,i.link,i.special(i.string)],color:ir},{tag:[i.meta,i.comment],color:pe},{tag:i.strong,fontWeight:"bold"},{tag:i.emphasis,fontStyle:"italic"},{tag:i.strikethrough,textDecoration:"line-through"},{tag:i.link,color:pe,textDecoration:"underline"},{tag:i.heading,fontWeight:"bold",color:Fe},{tag:[i.atom,i.bool,i.special(i.variableName)],color:Le},{tag:[i.processingInstruction,i.string,i.inserted],color:dr},{tag:i.invalid,color:lr}]),pr=[fr,je(mr)];var xr=U.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),yr=function(n){n===void 0&&(n={});var{indentWithTab:r=!0,editable:a=!0,readOnly:s=!1,theme:c="light",placeholder:d="",basicSetup:l=!0}=n,u=[];switch(r&&u.unshift(nt.of([Zn])),l&&(typeof l=="boolean"?u.unshift(Be()):u.unshift(Be(l))),d&&u.unshift(Qn(d)),c){case"light":u.push(xr);break;case"dark":u.push(pr);break;case"none":break;default:u.push(c);break}return a===!1&&u.push(U.editable.of(!1)),s&&u.push(ae.readOnly.of(!0)),[...u]},br=e=>({line:e.state.doc.lineAt(e.state.selection.main.from),lineCount:e.state.doc.lines,lineBreak:e.state.lineBreak,length:e.state.doc.length,readOnly:e.state.readOnly,tabSize:e.state.tabSize,selection:e.state.selection,selectionAsSingle:e.state.selection.asSingle().main,ranges:e.state.selection.ranges,selectionCode:e.state.sliceDoc(e.state.selection.main.from,e.state.selection.main.to),selections:e.state.selection.ranges.map(n=>e.state.sliceDoc(n.from,n.to)),selectedText:e.state.selection.ranges.some(n=>!n.empty)}),De=er.define(),vr=[];function jr(e){var{value:n,selection:r,onChange:a,onStatistics:s,onCreateEditor:c,onUpdate:d,extensions:l=vr,autoFocus:u,theme:f="light",height:o=null,minHeight:m=null,maxHeight:h=null,width:b=null,minWidth:T=null,maxWidth:I=null,placeholder:v="",editable:R=!0,readOnly:P=!1,indentWithTab:F=!0,basicSetup:y=!0,root:p,initialState:w}=e,[x,j]=g.useState(),[C,A]=g.useState(),[D,z]=g.useState(),J=U.theme({"&":{height:o,minHeight:m,maxHeight:h,width:b,minWidth:T,maxWidth:I},"& .cm-scroller":{height:"100% !important"}}),V=U.updateListener.of(O=>{if(O.docChanged&&typeof a=="function"&&!O.transactions.some(le=>le.annotation(De))){var _=O.state.doc,q=_.toString();a(q,O)}s&&s(br(O))}),Y=yr({theme:f,editable:R,readOnly:P,placeholder:v,indentWithTab:F,basicSetup:y}),W=[V,J,...Y];return d&&typeof d=="function"&&W.push(U.updateListener.of(d)),W=W.concat(l),g.useLayoutEffect(()=>{if(x&&!D){var O={doc:n,selection:r,extensions:W},_=w?ae.fromJSON(w.json,O,w.fields):ae.create(O);if(z(_),!C){var q=new U({state:_,parent:x,root:p});A(q),c&&c(q,_)}}return()=>{C&&(z(void 0),A(void 0))}},[x,D]),g.useEffect(()=>{e.container&&j(e.container)},[e.container]),g.useEffect(()=>()=>{C&&(C.destroy(),A(void 0))},[C]),g.useEffect(()=>{u&&C&&C.focus()},[u,C]),g.useEffect(()=>{C&&C.dispatch({effects:Xn.reconfigure.of(W)})},[f,l,o,m,h,b,T,I,v,R,P,F,y,a,d]),g.useEffect(()=>{if(n!==void 0){var O=C?C.state.doc.toString():"";C&&n!==O&&C.dispatch({changes:{from:0,to:O.length,insert:n||""},annotations:[De.of(!0)]})}},[n,C]),{state:D,setState:z,view:C,setView:A,container:x,setContainer:j}}var Cr=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],st=g.forwardRef((e,n)=>{var{className:r,value:a="",selection:s,extensions:c=[],onChange:d,onStatistics:l,onCreateEditor:u,onUpdate:f,autoFocus:o,theme:m="light",height:h,minHeight:b,maxHeight:T,width:I,minWidth:v,maxWidth:R,basicSetup:P,placeholder:F,indentWithTab:y,editable:p,readOnly:w,root:x,initialState:j}=e,C=It(e,Cr),A=g.useRef(null),{state:D,view:z,container:J,setContainer:V}=jr({root:x,value:a,autoFocus:o,theme:m,height:h,minHeight:b,maxHeight:T,width:I,minWidth:v,maxWidth:R,basicSetup:P,placeholder:F,indentWithTab:y,editable:p,readOnly:w,selection:s,onChange:d,onStatistics:l,onCreateEditor:u,onUpdate:f,extensions:c,initialState:j});g.useImperativeHandle(n,()=>({editor:A.current,state:D,view:z}),[A,J,D,z]);var Y=g.useCallback(O=>{A.current=O,V(O)},[V]);if(typeof a!="string")throw new Error("value must be typeof string but got "+typeof a);var W=typeof m=="string"?"cm-theme-"+m:"cm-theme";return t.jsx("div",xe({ref:Y,className:""+W+(r?" "+r:"")},C))});st.displayName="CodeMirror";var ot=e=>{var{theme:n,settings:r={},styles:a=[]}=e,s={".cm-gutters":{}},c={};r.background&&(c.backgroundColor=r.background),r.backgroundImage&&(c.backgroundImage=r.backgroundImage),r.foreground&&(c.color=r.foreground),r.fontSize&&(c.fontSize=r.fontSize),(r.background||r.foreground)&&(s["&"]=c),r.fontFamily&&(s["&.cm-editor .cm-scroller"]={fontFamily:r.fontFamily}),r.gutterBackground&&(s[".cm-gutters"].backgroundColor=r.gutterBackground),r.gutterForeground&&(s[".cm-gutters"].color=r.gutterForeground),r.gutterBorder&&(s[".cm-gutters"].borderRightColor=r.gutterBorder),r.caret&&(s[".cm-content"]={caretColor:r.caret},s[".cm-cursor, .cm-dropCursor"]={borderLeftColor:r.caret});var d={};r.gutterActiveForeground&&(d.color=r.gutterActiveForeground),r.lineHighlight&&(s[".cm-activeLine"]={backgroundColor:r.lineHighlight},d.backgroundColor=r.lineHighlight),s[".cm-activeLineGutter"]=d,r.selection&&(s["&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection"]={background:r.selection+" !important"}),r.selectionMatch&&(s["& .cm-selectionMatch"]={backgroundColor:r.selectionMatch});var l=U.theme(s,{dark:n==="dark"}),u=rt.define(a),f=[l,je(u)];return f},Sr={background:"#faf8f5",foreground:"#b29762",caret:"#93abdc",selection:"#e3dcce",selectionMatch:"#e3dcce",gutterBackground:"#faf8f5",gutterForeground:"#cdc4b1",gutterBorder:"transparent",lineHighlight:"#ddceb154"},kr=[{tag:[i.comment,i.bracket],color:"#b6ad9a"},{tag:[i.atom,i.number,i.keyword,i.link,i.attributeName,i.quote],color:"#063289"},{tag:[i.emphasis,i.heading,i.tagName,i.propertyName,i.variableName],color:"#2d2006"},{tag:[i.typeName,i.url,i.string],color:"#896724"},{tag:[i.operator,i.string],color:"#1659df"},{tag:[i.propertyName],color:"#b29762"},{tag:[i.unit,i.punctuation],color:"#063289"}],wr=e=>{var{theme:n="light",settings:r={},styles:a=[]}={};return ot({theme:n,settings:xe({},Sr,r),styles:[...kr,...a]})},Er=wr(),Tr={background:"#2a2734",foreground:"#6c6783",caret:"#ffad5c",selection:"#91ff6c26",selectionMatch:"#91ff6c26",gutterBackground:"#2a2734",gutterForeground:"#545167",lineHighlight:"#36334280"},Ir=[{tag:[i.comment,i.bracket],color:"#6c6783"},{tag:[i.atom,i.number,i.keyword,i.link,i.attributeName,i.quote],color:"#ffcc99"},{tag:[i.emphasis,i.heading,i.tagName,i.propertyName,i.className,i.variableName],color:"#eeebff"},{tag:[i.typeName,i.url],color:"#7a63ee"},{tag:i.operator,color:"#ffad5c"},{tag:i.string,color:"#ffb870"},{tag:[i.propertyName],color:"#9a86fd"},{tag:[i.unit,i.punctuation],color:"#e09142"}],Pr=e=>{var{theme:n="dark",settings:r={},styles:a=[]}={};return ot({theme:n,settings:xe({},Tr,r),styles:[...Ir,...a]})},Rr=Pr();const Or=E("aside")(({theme:e})=>({height:"50px",backgroundColor:e.palette.background.paper,borderTopRightRadius:e.shape.borderRadiusMedium,borderTopLeftRadius:e.shape.borderRadiusMedium,padding:e.spacing(1,2),color:e.palette.text.primary,display:"flex",justifyContent:"space-between",alignItems:"center",border:`1px solid ${e.palette.divider}`})),it=E("div")(({theme:e,style:n})=>({width:e.spacing(3),height:e.spacing(3),display:"flex",alignItems:"center",color:e.palette.background.paper,justifyContent:"center",transition:"background-color 0.5s ease-in-out",borderRadius:"50%",...n})),Br=E("div")(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.error.dark,marginRight:e.spacing(1)})),Fr=()=>{const e=N();return t.jsx(it,{style:{backgroundColor:e.palette.success.main},children:t.jsx(Rt,{sx:n=>({width:n.spacing(2),height:n.spacing(2)})})})},Lr=()=>{const e=N();return t.jsx(it,{style:{backgroundColor:e.palette.error.main},children:t.jsx(Ot,{})})},Nr=({context:e,setContext:n,error:r})=>{const{themeMode:a}=g.useContext(Pt),s=N(),c=g.useCallback(l=>{n(l)},[n]),d=`calc(6 * ${s.typography.body1.fontSize} * ${s.typography.body1.lineHeight}) + 8px`;return t.jsxs(k,{sx:{width:"100%"},children:[t.jsxs(Or,{children:["JSON",t.jsx(L,{condition:!!r,show:t.jsxs(k,{sx:l=>({display:"flex",alignItems:"center"}),children:[t.jsx(Br,{children:r}),t.jsx(Lr,{})]}),elseShow:t.jsx(Fr,{})})]}),t.jsx(st,{value:e,minHeight:d,theme:a==="dark"?Rr:Er,extensions:[tr()],onChange:c,style:{border:`1px solid ${s.palette.divider}`,borderTop:"none"},placeholder:JSON.stringify({currentTime:"2022-07-04T14:13:03.929Z",appName:"playground",userId:"test",remoteAddress:"127.0.0.1"},null,2)})]})};function lt(e){return Array.isArray(e)?e:[e]}const Ar=e=>!e||e.length===0||e.length===1&&e[0]==="*"?"*":lt(e),$r=e=>lt(e),Dr=e=>{const n=Wr(e);return n.length>0?n[0]:""},Wr=e=>e.filter(({enabled:n})=>!!n).sort((n,r)=>n.sortOrder-r.sortOrder).map(({name:n})=>n),Hr=(e,n)=>"100%",zr=e=>typeof e=="string"?!0:Array.isArray(e)?e.every(n=>typeof n=="string"):!1,Mr=e=>{const n=new Set(["appName","environment","userId","sessionId","remoteAddress","currentTime","properties"]),r={...e};let a=!1;for(const s in e)n.has(s)||(r.properties||(r.properties={}),r.properties[s]=e[s],delete r[s],a=!0);return!a&&!e.properties&&delete r.properties,r},Ur=e=>{const[n]=e.split("."),[r,a]=n.split(":");if(!r||!a)throw new Error("Invalid token format");if(a==="*")throw new Error("Admin tokens are not supported in the playground")},Gr=e=>{const[n]=e.split(".");return n.split(":")},_r=({context:e,setContext:n})=>{const r=N(),{setToastData:a}=Ue(),{context:s}=Bt(),c=s.sort((y,p)=>y.sortOrder-p.sortOrder).map(({name:y})=>y),[d,l]=g.useState(),[u,f]=g.useState(!1),[o,m]=g.useState(""),[h,b]=g.useState(""),T=g.useMemo(()=>sr(y=>{var p;if(!y)return l(void 0);try{const w=JSON.parse(y);f(w[o]!==void 0||((p=w==null?void 0:w.properties)==null?void 0:p[o])!==void 0)}catch(w){return l(Z(w))}return l(void 0)},250),[l,o,f]);g.useEffect(()=>{T(e)},[T,e]);const I=()=>{try{const y=JSON.parse(e||"{}");n(JSON.stringify(Mr({...y,[o]:h}),null,2));const p=s.find(w=>w.name===o);if(p!=null&&p.legalValues&&p.legalValues.length>0||o==="currentTime")return b("")}catch(y){a({type:"error",text:`Error parsing context: ${Z(y)}`})}},v=(y,p)=>{if(zr(p)){if(Array.isArray(p)){const w=(p||[]).length>1?p.join(","):p[0];return b(w)}b(p)}},R=()=>{if(!h||h==="")return[];const y=s.find(w=>w.name===o),p=((y==null?void 0:y.legalValues)||[]).length>1;return h.includes(",")&&p?h.split(","):[h]},P=()=>{if(o==="currentTime"){const p=Ee(h),x=p?Te(p.toISOString()):Te(new Date().toISOString());return t.jsx(te,{id:"date",label:"Date",size:"small",type:"datetime-local",value:x,sx:{width:200,maxWidth:"100%"},onChange:j=>{const C=Ee(j.target.value),A=C==null?void 0:C.toISOString();A&&b(A)},InputLabelProps:{shrink:!0},required:!0})}const y=s.find(p=>p.name===o);if(y!=null&&y.legalValues&&y.legalValues.length>0){const p=y.legalValues.map(({value:w})=>w);return t.jsx(Ge,{disablePortal:!0,limitTags:3,id:"context-legal-values",multiple:!0,options:p,disableCloseOnSelect:!0,size:"small",value:R(),onChange:v,getOptionLabel:w=>w,renderOption:(w,x,{selected:j})=>t.jsxs("li",{...w,children:[t.jsx($t,{icon:t.jsx(Dt,{fontSize:"small"}),checkedIcon:t.jsx(Wt,{fontSize:"small"}),sx:C=>({marginRight:C.spacing(.5)}),checked:j}),x]}),sx:{width:370,maxWidth:"100%"},renderInput:w=>t.jsx(te,{...w,label:"Value"})})}return t.jsx(te,{label:"Value",id:"context-value",sx:{width:370,maxWidth:"100%"},placeholder:"value1,value2,value3",size:"small",value:h,onChange:p=>b(p.target.value||"")})},F=y=>{if(m(y.target.value||""),y.target.value==="currentTime")return b(new Date().toISOString());b("")};return t.jsxs(k,{children:[t.jsx(k,{sx:{display:"flex",alignItems:"center",mb:2},children:t.jsx($,{variant:"body2",color:r.palette.text.primary,sx:{ml:1},children:"Unleash context"})}),t.jsxs(k,{sx:{display:"flex",gap:2,flexWrap:"wrap",mb:2},children:[t.jsxs(Ft,{children:[t.jsx(Lt,{id:"context-field-label",size:"small",children:"Context field"}),t.jsx(Nt,{label:"Context field",labelId:"context-field-label",id:"context-field",value:o,onChange:F,variant:"outlined",size:"small",sx:{width:200,maxWidth:"100%"},children:c.map(y=>t.jsx(At,{value:y,children:y},y))})]}),P(),t.jsx(se,{variant:"outlined",disabled:!o||!!d,onClick:I,sx:{width:"95px",maxHeight:"40px"},children:`${u?"Replace":"Add"} `})]}),t.jsx(Nr,{context:e,setContext:n,error:d})]})},Vr=({environments:e,setEnvironments:n,availableEnvironments:r,disabled:a})=>{const s=[...r.map(l=>({label:l,id:l}))],c=s.filter(({id:l})=>e.includes(l)),d=(l,u,f)=>{const o=u;return f==="clear"||o===null?n([]):Array.isArray(o)?o.length===0?n([]):n(o.map(({id:m})=>m)):n([o.id])};return t.jsx(Ge,{disablePortal:!0,limitTags:3,id:"environment",multiple:!0,options:s,sx:{flex:1},renderInput:l=>t.jsx(te,{...l,label:"Environments"}),renderOption:Ht,renderTags:(l,u)=>l.map((f,o)=>{const{key:m,...h}=u({index:o});return t.jsx(zt,{size:"small",...h,label:f.label},m)}),getOptionLabel:({label:l})=>l,disableCloseOnSelect:!1,size:"small",value:c,onChange:d,disabled:a,"data-testid":"PLAYGROUND_ENVIRONMENT_SELECT"})},he={label:"ALL",id:"*"},We=E(Mt)({fontSize:"1.25rem"}),ct=E(Ut)(()=>({width:"100%"})),qr=E(k)(({theme:e})=>({display:"grid",columnGap:e.spacing(2),rowGap:e.spacing(2),gridTemplateColumns:"1fr",[e.breakpoints.up("md")]:{gridTemplateColumns:"1fr 1fr"}})),Kr=E(ct)(({theme:e})=>({"& label":{WebkitTextFillColor:e.palette.text.secondary},"& input.Mui-disabled":{WebkitTextFillColor:e.palette.text.secondary}})),Jr=({environments:e,projects:n,token:r,setProjects:a,setEnvironments:s,setToken:c,availableEnvironments:d,changeRequest:l,onClearChangeRequest:u})=>{const f=N(),{tokens:o}=nr(),[m,h]=g.useState(),{projects:b}=Gt(),T=[he,...b.map(({name:x,id:j})=>({label:x,id:j}))],I=async x=>{const j=x.target.value;if(c==null||c(j),j===""){p();return}try{Ur(j),h(void 0),v(j)}catch(C){h(C.message)}},v=x=>{const[j,C]=Gr(x);switch(s([C]),j){case"[]":P(x);break;case"*":F();break;default:y(j)}},R=x=>{!x.projects||x.projects==="*"?a([he.id]):typeof x.projects=="string"?a([x.projects]):Array.isArray(x.projects)&&a(x.projects)},P=x=>{const j=o.find(({secret:C})=>C===x);j?R(j):h("Invalid token. Ensure you use a valid token from this Unleash instance.")},F=()=>{a([he.id])},y=x=>{T.map(j=>j.id).includes(x)?a([x]):h(`Invalid token. Project ${x} does not exist.`)},p=()=>{h(void 0)},w=()=>{c==null||c(""),p()};return t.jsxs(k,{sx:{pb:2},children:[t.jsx(k,{sx:{display:"flex",alignItems:"center",mb:2},children:t.jsx($,{variant:"body2",color:f.palette.text.primary,sx:{ml:1},children:"Access configuration"})}),t.jsxs(qr,{children:[t.jsx(k,{children:t.jsx(Ie,{arrow:!0,title:r?"Environment is automatically selected because you are using a token":"Select environments to use in the playground",children:t.jsx(k,{children:t.jsx(Vr,{environments:e,setEnvironments:s,availableEnvironments:d,disabled:!!(r||l)})})})}),t.jsx(k,{children:t.jsx(Ie,{arrow:!0,title:r?"Project is automatically selected because you are using a token":"Select projects to use in the playground",children:t.jsx(_t,{selectedProjects:n,onChange:a,dataTestId:"PLAYGROUND_PROJECT_SELECT",disabled:!!(r||l),limitTags:3})})}),t.jsx(k,{children:t.jsx(ct,{label:"API token",value:r||(l?" ":""),onChange:I,type:"text",error:!!m,errorText:m,placeholder:"Enter your API token","data-testid":"PLAYGROUND_TOKEN_INPUT",InputProps:{endAdornment:r?t.jsx(Pe,{position:"end","data-testid":"TOKEN_INPUT_CLEAR_BTN",children:t.jsx(G,{"aria-label":"clear API token",onClick:w,edge:"end",children:t.jsx(We,{})})}):null},disabled:!!l})}),t.jsx(L,{condition:!!l,show:t.jsxs(k,{sx:{display:"flex",gap:2},children:[t.jsx(k,{sx:{flex:1},children:t.jsx(Kr,{label:"Change request",value:l?`Change request #${l}`:"",onChange:()=>{},type:"text",disabled:!0,InputProps:{endAdornment:t.jsx(Pe,{position:"end",children:t.jsx(G,{"aria-label":"clear Change request results",onClick:u,edge:"end",children:t.jsx(We,{})})})}})}),t.jsx(se,{variant:"outlined",size:"small",to:`/projects/${n[0]}/change-requests/${l}`,component:Vt,children:"View change request"})]})})]})]})},Yr=({availableEnvironments:e,environments:n,onSubmit:r,projects:a,token:s,setToken:c,setProjects:d,setEnvironments:l,context:u,setContext:f,changeRequest:o,onClearChangeRequest:m})=>t.jsxs(k,{component:"form",onSubmit:r,sx:{display:"flex",flexDirection:"column"},children:[t.jsx(Jr,{environments:Array.isArray(n)?n:[n],projects:a,token:s,setToken:c,setEnvironments:l,setProjects:d,availableEnvironments:e.map(({name:h})=>h),changeRequest:o,onClearChangeRequest:m}),t.jsx(_r,{context:u,setContext:f}),t.jsx(k,{sx:{mt:2,display:"flex",alignItems:"center",justifyContent:"space-between"},children:t.jsx(se,{variant:"contained",size:"large",type:"submit",sx:{marginLeft:"auto"},children:"Try configuration"})})]}),Zr=E("div")(({style:e,theme:n})=>({width:"25px",height:"25px",borderRadius:"50%",color:n.palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",fontWeight:"bold",...e})),Qr=({style:e,children:n,type:r})=>{const a=N(),s={backgroundColor:a.palette.background.alternative,color:a.palette.common.white};return r==="secondary"&&(s.backgroundColor=a.palette.background.paper,s.color=a.palette.text.secondary),t.jsx(Zr,{style:{...s,...e},children:n})},ge=({headerText:e,bodyText:n,sectionNumber:r})=>t.jsx(k,{sx:{display:"flex",alignItems:"flex-start",mt:2,flexDirection:"column"},children:t.jsxs(k,{sx:{display:"flex"},children:[t.jsx(k,{children:t.jsx(Qr,{children:r})}),t.jsxs(k,{sx:{ml:2,display:"flex",flexDirection:"column"},children:[t.jsx($,{variant:"body1",sx:{fontWeight:"bold"},children:e}),t.jsx(L,{condition:!!n,show:t.jsx($,{variant:"body1",sx:{mt:1},children:n})})]})]})}),dt=()=>t.jsxs(k,{sx:{ml:4},children:[t.jsx($,{variant:"body1",children:"Unleash playground is for helping you to understand how Unleash works, how feature flags are evaluated and for you to easily debug your feature flags."}),t.jsx(qt,{sx:{mt:2,mb:2}}),t.jsx($,{variant:"body1",sx:{mb:1},children:"What you need to do is:"}),t.jsx(ge,{headerText:`Select in which environment you want to test your
2
- feature flag configuration`,bodyText:`You can also specify specific projects, or check
3
- flags in all projects.`,sectionNumber:"1"}),t.jsx(ge,{headerText:"Select a context field that you'd like to check",bodyText:"You can configure as many context fields as you want. You can also leave the context empty to test against an empty context.",sectionNumber:"2"}),t.jsx(ge,{headerText:"Submit the form to try the configuration",bodyText:"The results of evaluating your feature flags will appear after you submit the form. Then view the results.",sectionNumber:"3"})]});var Se={},Xr=Ve;Object.defineProperty(Se,"__esModule",{value:!0});var ut=Se.default=void 0,ea=Xr(_e()),ta=t,na=(0,ea.default)((0,ta.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"}),"Help");ut=Se.default=na;const ra=E(X)(({theme:e})=>({"& .MuiPaper-root":{borderRadius:e.shape.borderRadiusExtraLarge,border:`1px solid ${e.palette.divider}`,padding:e.spacing(8,4),maxWidth:"500px"}})),aa=()=>{const[e,n]=g.useState(null),r=c=>n(c.currentTarget),a=()=>n(null),s=!!e;return t.jsxs(k,{children:[t.jsx(G,{onClick:r,"aria-label":"Open Playground guidance",children:t.jsx(ut,{})}),t.jsxs(ra,{open:s,anchorEl:e,onClose:a,anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},sx:c=>({zIndex:c.zIndex.tooltip,background:"none"}),children:[t.jsx(G,{onClick:a,sx:{position:"absolute",right:25,top:15},children:t.jsx(Kt,{})}),t.jsx(dt,{})]})]})},sa=e=>g.createElement("svg",{width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},g.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.84818 0.184159C8.56367 -0.0789547 8.1234 -0.0575747 7.86482 0.231912C7.60623 0.521399 7.62724 0.96937 7.91175 1.23248C9.48292 2.68551 10.6076 4.74934 10.6076 7C10.6076 9.25066 9.48292 11.3145 7.91175 12.7675C7.62724 13.0306 7.60623 13.4786 7.86482 13.7681C8.1234 14.0576 8.56367 14.079 8.84818 13.8158C10.6396 12.1592 11.9998 9.73702 11.9998 7C11.9998 4.26298 10.6396 1.84083 8.84818 0.184159ZM6.04105 2.23302C6.29109 1.93586 6.73054 1.90121 7.02259 2.15563C8.33146 3.29586 9.35426 5.02309 9.35426 6.99995C9.35426 8.97682 8.33145 10.7039 7.02259 11.8441C6.73054 12.0986 6.29109 12.0639 6.04105 11.7668C5.79101 11.4696 5.82506 11.0225 6.11711 10.768C7.19425 9.82969 7.96199 8.46967 7.96199 6.99995C7.96199 5.53021 7.19423 4.17007 6.11711 3.23173C5.82506 2.97731 5.79101 2.53017 6.04105 2.23302ZM6.56908 7.00015C6.56908 8.56492 5.3224 9.83342 3.78454 9.83342C2.24668 9.83342 1 8.56492 1 7.00015C1 5.43539 2.24668 4.16689 3.78454 4.16689C5.3224 4.16689 6.56908 5.43539 6.56908 7.00015Z",fill:"currentColor"})),oa=e=>g.createElement("svg",{width:14,height:14,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},g.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.84835 0.184159C8.56384 -0.0789547 8.12358 -0.0575747 7.86499 0.231912C7.6064 0.521399 7.62741 0.96937 7.91192 1.23248C9.4831 2.68551 10.6078 4.74934 10.6078 7C10.6078 7.40738 10.5709 7.80863 10.5012 8.20125L11.6597 9.35972C11.8783 8.60937 12 7.81877 12 7C12 4.26298 10.6397 1.84083 8.84835 0.184159ZM9.35443 6.99995L9.35418 7.0542L7.63252 5.33255C7.30901 4.52372 6.76993 3.80029 6.11728 3.23173C5.82523 2.97731 5.79118 2.53017 6.04122 2.23302C6.29127 1.93586 6.73072 1.90121 7.02276 2.15563C8.33164 3.29586 9.35443 5.02309 9.35443 6.99995ZM7.57827 8.79752L6.48307 7.70233C6.17606 8.92745 5.08437 9.83342 3.78471 9.83342C2.24685 9.83342 1.00017 8.56492 1.00017 7.00015C1.00017 5.69492 1.8676 4.59583 3.04789 4.26714L0.458225 1.67748C0.172794 1.39205 0.178843 0.923223 0.471736 0.63033C0.764629 0.337437 1.23345 0.331388 1.51889 0.616819L13.2132 12.3111C13.4986 12.5965 13.4926 13.0654 13.1997 13.3583C12.9068 13.6511 12.4379 13.6572 12.1525 13.3718L10.556 11.7753C10.0694 12.539 9.48623 13.2259 8.84835 13.8158C8.56384 14.079 8.12358 14.0576 7.86499 13.7681C7.6064 13.4786 7.62741 13.0306 7.91192 12.7675C8.54021 12.1865 9.0971 11.5078 9.53922 10.7585L8.62356 9.84281C8.20906 10.6195 7.64861 11.2989 7.02276 11.8441C6.73072 12.0986 6.29127 12.0639 6.04122 11.7668C5.79118 11.4696 5.82523 11.0225 6.11728 10.768C6.73471 10.2302 7.25048 9.55374 7.57827 8.79752Z",fill:"currentColor"})),ia=e=>e==="unknown"||e==="unevaluated"?[oe,"info"]:e===!0?[sa,"success"]:[oa,"error"],K=({enabled:e,label:n,showIcon:r=!0})=>{const[a,s]=ia(e);return t.jsx(qe,{color:s,icon:r?t.jsx(a,{"aria-hidden":!0,color:s,strokeWidth:"0.25"}):void 0,children:n})},la=E(k)(({theme:e})=>({display:"flex",alignItems:"center",padding:e.spacing(1,0,1,2)})),ca=E(k)(()=>({marginRight:"auto"})),ht=({feature:e})=>{const[n,r]=(()=>{var a;return e!=null&&e.isEnabled?[!0,"True"]:((a=e==null?void 0:e.strategies)==null?void 0:a.result)==="unknown"?["unknown","Unknown"]:[!1,"False"]})();return t.jsx(la,{children:t.jsx(ca,{"data-loading":!0,children:t.jsx(K,{enabled:n,label:r,showIcon:n!=="unknown"})})})};function gt(e){return e===void 0?!0:Object.values(e).every(n=>n&&typeof n=="object"?gt(n):n===null)}const He=e=>{var n,r;return(r=(n=e.strategies)==null?void 0:n.data)==null?void 0:r.find(a=>!Ke.includes(a.name))},da=e=>{var n,r,a,s;return((r=(n=e.strategies)==null?void 0:n.data)==null?void 0:r.length)>0&&!((s=(a=e.strategies)==null?void 0:a.data)!=null&&s.find(c=>Ke.includes(c.name)))},ua=E("div")({display:"flex",justifyContent:"space-between",width:"100%"}),ha=E("hgroup")(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:e.spacing(1.5)})),ga=E("h3")(({theme:e})=>({fontWeight:"bold",fontSize:e.typography.subtitle1.fontSize,margin:0})),fa=({feature:e,input:n,onClose:r})=>{var o;const a=N(),[s,c,d]=e.isEnabled?[`This feature flag is True in ${n==null?void 0:n.environment} because `,"at least one strategy is True",a.palette.success.contrastText]:e.hasUnsatisfiedDependency&&!e.isEnabledInCurrentEnvironment?[`This feature flag is False in ${n==null?void 0:n.environment} because `,"parent dependency is not satisfied and the environment is disabled",a.palette.error.contrastText]:e.isEnabledInCurrentEnvironment?da(e)?[`This feature flag is Unknown in ${n==null?void 0:n.environment} because `,"no strategies could be fully evaluated",a.palette.warning.contrastText]:He(e)?[`This feature flag is Unknown in ${n==null?void 0:n.environment} because `,"not all strategies could be fully evaluated",a.palette.warning.contrastText]:e.hasUnsatisfiedDependency?[`This feature flag is False in ${n==null?void 0:n.environment} because `,"parent dependency is not satisfied",a.palette.error.contrastText]:[`This feature flag is False in ${n==null?void 0:n.environment} because `,"all strategies are either False or could not be fully evaluated",a.palette.error.contrastText]:[`This feature flag is False in ${n==null?void 0:n.environment} because `,"the environment is disabled",a.palette.error.contrastText],l=gt(n==null?void 0:n.context)?"You did not provide a value for your context field in step 2 of the configuration":void 0,u=He(e)?"This feature uses custom strategies. Custom strategies can't be evaluated, so they will be marked accordingly.":void 0,f=r&&(m=>{m.stopPropagation(),r()});return t.jsxs(t.Fragment,{children:[t.jsxs(ua,{children:[t.jsxs(ha,{children:[t.jsx(ga,{children:e.name}),t.jsx("p",{children:((o=e==null?void 0:e.strategies)==null?void 0:o.result)!=="unknown"?t.jsx(K,{enabled:e.isEnabled,label:e.isEnabled?"True":"False"}):t.jsx(K,{enabled:"unknown",label:"Unknown",showIcon:!1})})]}),t.jsx(G,{"aria-label":"Close",onClick:f,children:t.jsx(Jt,{})})]}),t.jsxs("p",{children:[s,t.jsx($,{color:d,component:"span",children:c}),"."]}),l?t.jsx(Q,{color:"info",children:l}):null,u?t.jsx(Q,{severity:"warning",color:"info",children:u}):null]})},ft=E("div",{shouldForwardProp:e=>e!=="variant"})(({theme:e,variant:n})=>({"--font-size":e.typography.body2.fontSize,display:"flex",alignItems:"center",gap:e.spacing(1),padding:e.spacing(.5,.25),color:n==="ok"?e.palette.success.dark:e.palette.error.dark,fontSize:"var(--font-size)",svg:{fontSize:"calc(var(--font-size) * 1.25)"}})),ma=()=>t.jsxs(ft,{variant:"ok",children:[t.jsx(Zt,{"aria-hidden":"true"}),t.jsx("p",{children:"Constraint met by value in context"})]}),pa=({text:e})=>t.jsxs(ft,{variant:"error",children:[t.jsx(Qt,{"aria-hidden":"true"}),t.jsx("p",{children:e})]}),mt=({constraint:e,input:n})=>{if(!e)return null;const r=()=>{const a=n==null?void 0:n.context[e.contextName];return a?`Constraint not met – the value in the context: { ${a} } is not ${e.operator} ${e.contextName}`:`Constraint not met – no value was specified for ${e.contextName}`};return t.jsx(me,{children:t.jsxs("div",{children:[t.jsx(Yt,{...e}),e.result?t.jsx(ma,{}):t.jsx(pa,{text:r()})]})})},xa=E(k)(({theme:e})=>({width:"auto",height:"auto",padding:e.spacing(2,3),borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`})),ya=({segment:e,input:n})=>{const r=e.constraints.length>0?t.jsx(Je,{children:e.constraints.map(a=>t.jsx(mt,{constraint:a,input:n},re(a)))}):void 0;return t.jsx(Xt,{segment:e,constraintList:r,isExpanded:!0})},ba=({strategyResult:e,input:n})=>{const{name:r,constraints:a,segments:s,parameters:c}=e,d=en(e),{strategies:l}=tn(),{isCustomStrategy:u,customStrategyParameters:f}=nn(e,l),o=!!(s&&s.length>0),m=!!(a&&(a==null?void 0:a.length)>0),h=r!=="default"&&Object.keys(rn).includes(r);if(!c)return null;const b=[...o?s.map(v=>t.jsx(ya,{segment:v,input:n},re(v))):[],...m?a.map(v=>t.jsx(mt,{constraint:v,input:n},re(v))):[],h&&d.map((v,R)=>t.jsx(me,{children:v},R)),u&&f.map((v,R)=>t.jsx(me,{children:v},R)),r==="default"&&t.jsxs(xa,{sx:{width:"100%"},children:["The standard strategy is ",t.jsx(qe,{color:"success",children:"ON"})," for all users."]},"default-on")].filter(Boolean),{variant:T,variants:I}=e.result;return t.jsxs(t.Fragment,{children:[t.jsx(Je,{children:b}),I!=null&&I.length?t.jsx(an,{variants:I,selected:T==null?void 0:T.name}):null]})},va=({strategy:e,input:n,className:r})=>{const{result:a}=e,s=a.evaluationStatus==="incomplete"||a.evaluationStatus==="unevaluated"?"Not evaluated":a.enabled?"True":"False";return t.jsx(sn,{strategy:{...e,id:`${re(e)}`},strategyHeaderLevel:4,className:r,headerItemsLeft:e.disabled?null:t.jsx(K,{showIcon:!1,enabled:a.enabled,label:s}),children:t.jsx(ba,{strategyResult:e,input:n})})},ja=E("hgroup")(({theme:e})=>({paddingBottom:e.spacing(2)})),Ca=E("h4")(({theme:e})=>({fontWeight:"normal",fontSize:e.typography.body1.fontSize,margin:0})),Sa=E("p")(({theme:e})=>({fontWeight:"bold",fontSize:e.typography.body2.fontSize})),ka=E(on)(({theme:e})=>({marginInline:"calc(var(--popover-inline-padding) * -1)",borderTop:`1px solid ${e.palette.divider}`,"> li:last-of-type":{paddingBottom:0}})),ze=({strategies:e,input:n,titlePrefix:r,infoText:a})=>e.length===0?null:t.jsxs("div",{children:[t.jsxs(ja,{children:[t.jsx(Ca,{children:`${r?r.concat(" strategies"):"Strategies"} (${e==null?void 0:e.length})`}),a?t.jsx(Sa,{children:a}):null]}),t.jsx(ka,{children:e==null?void 0:e.map((s,c)=>t.jsxs(ln,{children:[c>0?t.jsx(cn,{}):"",t.jsx(va,{strategy:s,input:n})]},s.id))})]}),wa=({feature:e})=>{var r,a;if(!((r=e==null?void 0:e.strategies)!=null&&r.data))return null;let n;if(e.hasUnsatisfiedDependency&&!e.isEnabledInCurrentEnvironment)n="If the environment was enabled and parent dependencies were satisfied";else if(e.hasUnsatisfiedDependency)n="If parent dependencies were satisfied";else if(!e.isEnabledInCurrentEnvironment)n="If the environment was enabled";else return;return t.jsxs(Q,{severity:"info",color:"info",children:[n,", then this feature flag would be"," ",(a=e.strategies)!=null&&a.result?"TRUE":"FALSE"," with strategies evaluated like this:"]})},Ea=({feature:e,input:n})=>{var c,d,l,u,f;const r=(d=(c=e.strategies)==null?void 0:c.data)==null?void 0:d.filter(o=>!o.disabled),a=(u=(l=e.strategies)==null?void 0:l.data)==null?void 0:u.filter(o=>o.disabled),s=(a==null?void 0:a.length)>0;return(((f=e==null?void 0:e.strategies)==null?void 0:f.data.length)??0)===0?t.jsx(Q,{severity:"info",children:"There are no strategies added to this feature flag in the selected environment."}):t.jsxs(t.Fragment,{children:[t.jsx(wa,{feature:e}),t.jsx(ze,{strategies:r||[],input:n,titlePrefix:s?"Enabled":void 0}),s?t.jsx(ze,{strategies:a,input:n,titlePrefix:"Disabled",infoText:"Disabled strategies are not evaluated for the overall result."}):null]})},Ta=E("div")(({theme:e})=>({alignItems:"flex-end",color:e.palette.divider})),Ia=({feature:e,input:n})=>{const[r,a]=g.useState(!1),s=g.useRef(null),c=()=>{a(!r)};return t.jsxs(Ta,{children:[t.jsx(G,{onClick:c,children:t.jsx(oe,{ref:s})}),t.jsxs(X,{open:r,onClose:()=>a(!1),anchorEl:s.current,PaperProps:{sx:d=>({"--popover-inline-padding":d.spacing(4),paddingInline:"var(--popover-inline-padding)",paddingBlock:d.spacing(3),display:"flex",flexDirection:"column",width:728,maxWidth:"100%",height:"auto",gap:d.spacing(3),overflowY:"auto",backgroundColor:d.palette.background.elevation1,borderRadius:d.shape.borderRadius})},anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"center",horizontal:"left"},children:[t.jsx(fa,{feature:e,input:n,onClose:()=>a(!1)}),t.jsx(Ea,{feature:e,input:n})]})]})},pt=e=>e.feature?t.jsx(Ia,{...e}):null;var ke={},Pa=Ve;Object.defineProperty(ke,"__esModule",{value:!0});var xt=ke.default=void 0,Ra=Pa(_e()),Oa=t,Ba=(0,Ra.default)((0,Oa.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z"}),"CheckCircleOutlined");xt=ke.default=Ba;const Fa=E("div")(({theme:e})=>({padding:e.spacing(4),maxWidth:"400px"})),fe=E($)(({theme:e})=>({marginBottom:e.spacing(2)})),La=E(xt)(({theme:e})=>({color:e.palette.success.main})),Na=({variants:e,selectedVariant:n})=>{const r=N(),a=g.useMemo(()=>e.map(o=>({name:o.name,weight:`${dn(o.weight)}%`,selected:o.name===n})),[e,n]),s=g.useMemo(()=>({sortBy:[{id:"name",desc:!1}]}),[]),{getTableProps:c,getTableBodyProps:d,headerGroups:l,rows:u,prepareRow:f}=B.useTable({initialState:s,columns:Aa,data:a,sortTypes:ie,autoResetGlobalFilter:!1,autoResetSortBy:!1,disableSortRemove:!0},B.useGlobalFilter,B.useSortBy);return t.jsxs(Fa,{children:[t.jsx(fe,{variant:"subtitle2",children:"Variant Information"}),t.jsx(fe,{variant:"body2",children:"The following table shows the variants defined on this feature toggle and the variant result based on your context configuration."}),t.jsx(fe,{variant:"body2",children:'If you include "userId" or "sessionId" in your context, the variant will be the same every time because unleash uses these properties to ensure that the user receives the same experience.'}),t.jsxs(un,{...c(),rowHeight:"dense",children:[t.jsx(hn,{headerGroups:l}),t.jsx(gn,{...d(),children:u.map(o=>{const m={};o.original.selected||(m.color=r.palette.text.secondary),f(o);const{key:h,...b}=o.getRowProps();return t.jsx(fn,{hover:!0,...b,children:o.cells.map(T=>{const{key:I,...v}=T.getCellProps();return t.jsx(mn,{...v,style:m,children:T.render("Cell")},I)})},h)})})]})]})},Aa=[{id:"Icon",Cell:({row:{original:{selected:e}}})=>t.jsx(t.Fragment,{children:t.jsx(L,{condition:e,show:t.jsx(pn,{icon:t.jsx(La,{})})})}),maxWidth:25,disableGlobalFilter:!0},{Header:"Name",accessor:"name",searchable:!0,Cell:({row:{original:{name:e}}})=>t.jsx(Re,{children:e}),maxWidth:175,width:175},{Header:"Weight",accessor:"weight",sortType:"alphanumeric",searchable:!0,maxWidth:75,Cell:({row:{original:{weight:e}}})=>t.jsx(Re,{children:e})}],$a=E("div")(()=>({maxWidth:"100%",display:"flex",alignItems:"center",wordBreak:"break-all"})),Da=({variant:e,variants:n,feature:r,isEnabled:a})=>{const s=N(),[c,d]=g.useState(null),l=o=>d(o.currentTarget),u=()=>d(null),f=!!c;return t.jsxs($a,{children:[e,t.jsx(L,{condition:!!n&&n.length>0&&a,show:t.jsxs(t.Fragment,{children:[t.jsx(G,{onClick:l,children:t.jsx(oe,{})}),t.jsx(X,{open:f,id:`${r}-result-variants`,PaperProps:{sx:{borderRadius:`${s.shape.borderRadiusLarge}px`}},onClose:u,anchorEl:c,anchorOrigin:{vertical:"bottom",horizontal:-320},children:t.jsx(Na,{variants:n,selectedVariant:e})})]})})]})},Wa=({features:e})=>{const n=N(),r=Ye(n.breakpoints.down("sm")),a=Object.keys(e[0].context).map(o=>({Header:ye(o),accessor:m=>m.context[o],minWidth:160,Cell:be})),s=g.useMemo(()=>[...a,{Header:"Variant",id:"variant",accessor:"variant.name",sortType:"alphanumeric",filterName:"variant",maxWidth:200,Cell:({value:o,row:{original:{variant:m,feature:h,variants:b,isEnabled:T}}})=>t.jsx(Da,{variant:m!=null&&m.enabled?o:"",variants:b,feature:h,isEnabled:T})},{id:"isEnabled",Header:"isEnabled",filterName:"isEnabled",accessor:o=>{var m;return o!=null&&o.isEnabled?"true":((m=o==null?void 0:o.strategies)==null?void 0:m.result)==="unknown"?"unknown":"false"},Cell:({row:o})=>t.jsx(ht,{feature:o.original}),sortType:"playgroundResultState",maxWidth:120,sortInverted:!0},{Header:"",maxWidth:70,id:"info",Cell:({row:o})=>t.jsx(pt,{feature:o.original,input:{environment:o.original.environment,context:o.original.context}})}],[]),{headerGroups:c,rows:d,prepareRow:l,setHiddenColumns:u}=B.useTable({columns:s,data:e,sortTypes:ie,autoResetGlobalFilter:!1,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0},B.useGlobalFilter,B.useFlexLayout,B.useSortBy);Ze([{condition:r,columns:["variant"]}],u,s);const f=g.useRef(null);return t.jsx(k,{ref:f,sx:{overflow:"auto",maxHeight:"800px"},children:t.jsx(ve,{parentRef:f,rows:d,headerGroups:c,prepareRow:l})})},Ha=E("div",{})(({theme:e})=>({flexGrow:0,...Qe,justifyContent:"flex-start",margin:e.spacing(0,1.5)})),za=E(k)(({theme:e})=>({display:"flex",flexDirection:"row",gap:e.spacing(1)})),Ma=({value:e})=>{const n=N(),[r,a]=g.useState(null),s=f=>a(f.currentTarget),c=()=>a(null),d=!!r,l=(e||[]).filter(f=>f.isEnabled),u=(e||[]).filter(f=>!f.isEnabled);return t.jsxs(Ha,{children:[t.jsxs(za,{children:[t.jsx(L,{condition:l.length>0,show:t.jsx(K,{enabled:!0,label:`${l.length}`,showIcon:!0})}),t.jsx(L,{condition:u.length>0,show:t.jsx(K,{enabled:!1,label:`${u.length}`,showIcon:!0})})]}),t.jsxs(t.Fragment,{children:[t.jsx(G,{onClick:s,children:t.jsx(oe,{})}),t.jsxs(X,{open:d,id:`${e}-result-details`,PaperProps:{sx:{borderRadius:`${n.shape.borderRadiusLarge}px`,padding:n.spacing(3)}},onClose:c,anchorEl:r,anchorOrigin:{vertical:"bottom",horizontal:-320},children:[t.jsx($,{variant:"subtitle2",sx:{mb:3},children:e[0].environment}),t.jsx(Wa,{features:e})]})]})]})},Ua=({features:e})=>{const n=Object.keys(e),r=e[n[0]],a=r[0].context,s=g.useMemo(()=>r.map((h,b)=>({...Object.fromEntries(n.map(T=>[T,e[T][b]]))})),[JSON.stringify(e)]),c=Object.keys(a).map(h=>({Header:ye(h),accessor:b=>b[n[0]].context[h],minWidth:160,Cell:be})),d=n.map(h=>({Header:h,accessor:b=>{var T,I,v;return(T=b[h])!=null&&T.isEnabled?"true":((v=(I=b[h])==null?void 0:I.strategies)==null?void 0:v.result)==="unknown"?"unknown":"false"},Cell:({row:b})=>t.jsxs(k,{sx:{display:"flex"},children:[t.jsx(ht,{feature:b.original[h]}),t.jsx(pt,{feature:b.original[h],input:{environment:b.original[h].environment,context:b.original[h].context}})]}),sortType:"playgroundResultState",maxWidth:140})),l=g.useMemo(()=>[...c,...d],[]),{headerGroups:u,rows:f,prepareRow:o}=B.useTable({columns:l,data:s,sortTypes:ie,autoResetGlobalFilter:!1,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0},B.useGlobalFilter,B.useFlexLayout,B.useSortBy),m=g.useRef(null);return t.jsx(k,{ref:m,sx:{overflow:"auto",maxHeight:"800px"},children:t.jsx(ve,{parentRef:m,rows:f,headerGroups:u,prepareRow:o})})},Ga=E("div",{})(({theme:e})=>({flexGrow:0,...Qe,justifyContent:"flex-start",margin:e.spacing(0,1.5)})),_a=E(se)(({theme:e})=>({textAlign:"left",textDecorationStyle:"dotted",textDecorationLine:"underline",textUnderlineOffset:e.spacing(.75),color:e.palette.neutral.dark,padding:0,fontWeight:"normal"})),Va=({value:e})=>{const n=N(),[r,a]=g.useState(null),s=l=>a(l.currentTarget),c=()=>a(null),d=!!r;return t.jsx(Ga,{children:t.jsxs(t.Fragment,{children:[t.jsx(_a,{variant:"text",onClick:s,children:"View diff"}),t.jsxs(X,{open:d,id:`${e}-result-details`,PaperProps:{sx:{borderRadius:`${n.shape.borderRadiusLarge}px`,padding:n.spacing(3)}},onClose:c,anchorEl:r,anchorOrigin:{vertical:"bottom",horizontal:-320},children:[t.jsx($,{variant:"subtitle2",sx:{mb:3},children:"Environments diff"}),t.jsx(Ua,{features:e})]})]})})},qa=e=>e.reduce((n,r)=>n+Object.values(r.environments).flatMap(a=>Object.keys(a)).length,0),Ka=e=>e<0?"invalid bucket":e>=2e4?"20000+":e>=1e4?"10000-20000":e>=1e3?"1000-10000":e>=100?"100-1000":"0-100",Ja={id:"name"},{value:Me,setValue:Ya}=Xe("AdvancedPlaygroundResultsTable:v1",Ja),Za=({features:e,input:n,loading:r})=>{const{trackEvent:a}=et();e&&a("playground",{props:{eventType:"number-of-combinations",count:Ka(qa(e))}});const[s,c]=tt(),d=xn(r),[l,u]=g.useState(s.get("search")||""),f=N(),o=Ye(f.breakpoints.down("md")),m=e&&e.length>0?Object.keys(e[0].environments).length:0,h=g.useMemo(()=>{var x;return[{Header:"Name",accessor:"name",searchable:!0,minWidth:160,Cell:({value:j,row:{original:C}})=>t.jsx(Oe,{title:j,to:`/projects/${C==null?void 0:C.projectId}/features/${j}`})},{Header:"Project ID",accessor:"projectId",sortType:"alphanumeric",filterName:"projectId",searchable:!0,minWidth:150,Cell:({value:j})=>t.jsx(Oe,{title:j,to:`/projects/${j}`})},...((x=n==null?void 0:n.environments)==null?void 0:x.map(j=>({Header:r?()=>"":ye(j),maxWidth:150,id:`environments.${j}`,align:"flex-start",Cell:({row:C})=>t.jsx(Ma,{value:C.original.environments[j]})})))||[],...m>1?[{Header:"Diff",minWidth:150,id:"diff",align:"left",Cell:({row:j})=>t.jsx(Va,{value:j.original.environments})}]:[]]},[n]),{data:b,getSearchText:T,getSearchContext:I}=yn(h,l,e||[]),v=g.useMemo(()=>r?Array(5).fill({name:"Feature name",projectId:"Feature Project",environments:{name:"Feature Environments",variants:[]},enabled:!0}):b,[b,r]),[R]=g.useState(()=>({sortBy:[{id:s.get("sort")||Me.id,desc:s.has("order")?s.get("order")==="desc":Me.desc}]})),{headerGroups:P,rows:F,state:{sortBy:y},prepareRow:p,setHiddenColumns:w}=B.useTable({initialState:R,columns:h,data:v,sortTypes:ie,autoResetGlobalFilter:!1,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0,defaultColumn:{Cell:be}},B.useGlobalFilter,B.useFlexLayout,B.useSortBy);return Ze([{condition:o,columns:["projectId"]}],w,h),g.useEffect(()=>{if(r)return;const x=Object.fromEntries(s);x.sort=y[0].id,y[0].desc?x.order="desc":x.order&&delete x.order,l?x.search=l:delete x.search,c(x,{replace:!0}),Ya({id:y[0].id,desc:y[0].desc||!1})},[r,y,l]),t.jsxs(t.Fragment,{children:[t.jsxs(k,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3},children:[t.jsx($,{variant:"subtitle1",sx:{ml:1},children:e!==void 0&&!r?`Results (${F.length<v.length?`${F.length} of ${v.length}`:v.length})`:"Results"}),t.jsx(bn,{initialValue:l,onChange:u,hasFilters:!0,getSearchContext:I,disabled:r,containerStyles:{marginLeft:"1rem",maxWidth:"400px"}})]}),t.jsx(L,{condition:!r&&!v,show:()=>t.jsx(de,{children:v===void 0?"None of the feature flags were evaluated yet.":"No results found."}),elseShow:()=>t.jsxs(k,{ref:d,sx:{overflow:"auto"},children:[t.jsx(vn,{value:T(l),children:t.jsx(ve,{rows:F,headerGroups:P,prepareRow:p})}),t.jsx(L,{condition:v.length===0&&(l==null?void 0:l.length)>0,show:t.jsxs(de,{children:["No feature flags found matching “",l,"”"]})}),t.jsx(L,{condition:v&&v.length===0&&!l,show:t.jsx(de,{children:"No features flags to display"})})]})})]})},yt=E(Q)(({theme:e})=>({marginBottom:e.spacing(3)})),Qa=({response:e})=>{var r;const n=(r=e==null?void 0:e.warnings)==null?void 0:r.invalidContextProperties;if(n&&n.length>0){n.sort();const a="Some context properties were not taken into account during evaluation",s=E("details")(({theme:c})=>({"* + *":{marginBlockStart:c.spacing(1)}}));return t.jsx(yt,{severity:"warning",children:t.jsxs(s,{children:[t.jsx("summary",{children:a}),t.jsx("p",{children:"The context you provided for this query contained top-level properties with invalid values. These properties were not taken into consideration when evaluating your query. The properties are:"}),t.jsx("ul",{children:n.map(c=>t.jsx("li",{"data-testid":"context-warning-list-element",children:t.jsx("code",{children:c})},c))}),t.jsxs("p",{children:["Remember that context fields (with the exception of the"," ",t.jsx("code",{children:"properties"})," object) must be strings."]}),t.jsx("p",{children:"Because we didn't take these properties into account during the feature flag evaluation, they will not appear in the results table."})]})})}else return null},ns=({FormComponent:e=Yr})=>{const n={projects:[],environments:[]},{value:r,setValue:a}=Xe("AdvancedPlayground:v1",n),{trackEvent:s}=et(),{environments:c}=jn(),d=N(),l=!0,[u,f]=g.useState(),[o,m]=g.useState(r.environments),[h,b]=g.useState(r.projects),[T,I]=g.useState(r.token),[v,R]=g.useState(r.context),[P,F]=g.useState(),{setToastData:y}=Ue(),[p,w]=tt(),[x,j]=g.useState(),{evaluateAdvancedPlayground:C,evaluateChangeRequestPlayground:A,loading:D,errors:z}=rr(),[J,V]=g.useState(!1);g.useEffect(()=>{(o==null?void 0:o.length)===0&&c.length>0&&m([Dr(c)])},[JSON.stringify(o),JSON.stringify(c)]),g.useEffect(()=>{Y()},[]);const Y=async()=>{try{const S=W(),H=O(),ee=_();q(),le(),S&&ee&&await we(S||[],H||"*",ee)}catch(S){y({type:"error",text:`Failed to parse URL parameters: ${Z(S)}`})}},W=()=>{let S=null;const H=p.get("environments");return H&&(S=H.split(","),m(S)),S},O=()=>{let S=null;const H=p.get("projects");return H&&(S=H.split(","),b(S)),S},_=()=>{let S=p.get("context");return S&&(S=decodeURI(S),R(S)),S},q=()=>{let S=p.get("token");return S&&(S=decodeURI(S),I(S)),S},le=()=>{const S=p.get("changeRequest");S&&j(S)},we=async(S,H,ee,ce)=>{try{f(void 0);const M={appName:"playground",...JSON.parse(ee||"{}")},wt=x?await A(x,{context:M}):await C({environments:$r(S),projects:Ar(H),context:M});ce&&typeof ce=="function"&&ce(),F(wt)}catch(M){M instanceof Cn?f(M.message):M instanceof SyntaxError?y({type:"error",text:`Error parsing context: ${Z(M)}`}):y({type:"error",text:Z(M)})}},bt=()=>{let S="default";T&&T!==""?S="api_token":x&&(S="change_request"),s("playground",{props:{eventType:"try-configuration",mode:S}})},vt=async S=>{S.preventDefault(),V(!0),bt(),await we(o,h,v,()=>{Ct(),x||a({environments:o,projects:h,context:v})})},jt=()=>{j(void 0)},Ct=()=>{p.set("context",encodeURI(v||"")),Array.isArray(o)&&o.length>0&&!(o.length===1&&o[0]==="*")?p.set("environments",o.join(",")):p.delete("projects"),Array.isArray(h)&&h.length>0&&!(h.length===1&&h[0]==="*")?p.set("projects",h.join(",")):p.delete("projects"),x?p.set("changeRequest",x):p.delete("changeRequest"),w(p)},St=P&&!l?"35%":"auto",kt=Hr();return t.jsx(Sn,{header:t.jsx(kn,{title:"Unleash playground",actions:t.jsx(aa,{})}),disableLoading:!0,bodyClass:"no-padding",children:t.jsxs(k,{sx:{display:"flex",flexDirection:"column"},children:[t.jsx(k,{sx:{background:d.palette.background.elevation2,borderBottomLeftRadius:d.shape.borderRadiusMedium,isolation:"isolate",zIndex:2},children:t.jsx(wn,{elevation:0,sx:{px:4,py:3,background:d.palette.background.elevation2,transition:"width 0.4s ease",minWidth:"auto",width:St,position:"sticky",top:0},children:t.jsx(e,{onSubmit:vt,context:v,setContext:R,availableEnvironments:c,projects:h,environments:o,token:T,setToken:I,setProjects:b,setEnvironments:m,changeRequest:x||void 0,onClearChangeRequest:jt})})}),t.jsxs(k,{sx:S=>({width:kt,transition:"width 0.4s ease",padding:S.spacing(4,4),isolation:"isolate",zIndex:1}),children:[t.jsx(L,{condition:!!u,show:t.jsx(yt,{severity:"warning",children:u})}),t.jsx(L,{condition:D,show:t.jsx(En,{}),elseShow:t.jsxs(t.Fragment,{children:[t.jsx(L,{condition:!!P&&Object.values(z).length===0,show:t.jsxs(t.Fragment,{children:[t.jsx(Qa,{response:P}),t.jsx(Za,{loading:D,features:P==null?void 0:P.features,input:P==null?void 0:P.input})]})}),t.jsx(L,{condition:!P&&!J,show:t.jsx(dt,{})})]})})]})]})})};export{ns as AdvancedPlayground,ns as default};
@@ -1 +0,0 @@
1
- import{s as l,B as n,cS as c,bc as d,j as e,C as p,V as a,T as h,y as g,hw as u,iU as x,iN as m,iO as j,iP as y,iQ as S,iR as C,iS as f,iT as B}from"./index-Yy9_7TKN.js";import{u as T,b as P,S as b,T as v,P as w,c as D,g as k}from"./useChartDataSelection-BfTrFKbU.js";import{a as q}from"./formatTickValue-D_CAvIVf.js";import"./LazyAdminExport-6l0-2zFb.js";import"./RoleCell-DJbKzxr1.js";import"./useApiTokens-DE54gK5i.js";const R=l(n)(({theme:s})=>({display:"flex",alignItems:"center",gap:s.spacing(.5)})),A=()=>{c("Network - Backend Connections");const{isOss:s}=d(),{chartDataSelection:t,setChartDataSelection:i,options:o}=T(),{chartData:r}=P(t);return e.jsx(p,{condition:s(),show:e.jsx(a,{severity:"warning",children:"Not enabled."}),elseShow:e.jsx(e.Fragment,{children:e.jsxs(b,{children:[e.jsxs(v,{children:[e.jsx(n,{children:e.jsx(a,{severity:"info",icon:!1,children:e.jsxs(R,{children:[e.jsx(h,{children:"1 connection = 7200 backend SDK requests per day"}),e.jsx(g,{title:"1 connection involves polling every 15 seconds and sending metrics every 60 seconds. This translates to 5 requests per minute, 300 requests per hour, and 7200 requests per day.",children:e.jsx(u,{})})]})})}),e.jsx(w,{selectedPeriod:t,setPeriod:i})]}),e.jsx(x,{data:r,plugins:[D()],options:o,"aria-label":k(t)})]})})})};m.register(q,j,y,S,C,f,B);export{A as BackendConnections,A as default};
@@ -1,2 +0,0 @@
1
- import{i_ as c,db as m,iL as u,bv as x,b as g,bs as f,r as d,j as b,jb as C,iN as v,iO as M,iP as S,j4 as j,jc as q,j7 as T,iT as D,iS as E,iR as L}from"./index-Yy9_7TKN.js";import{d as $}from"./FeatureViewLazyExport-BU9aw-MC.js";import"./MarkCompletedDialogue-SyWeA6AL.js";import"./aggregateFeatureMetrics-COQ_COHJ.js";import"./FeatureStaleDialog-Q5amMPCM.js";const O=(e,i,s)=>{const a={label:"Total requests",borderColor:e.palette.primary.main,backgroundColor:e.palette.primary.main,data:p(i,s,o=>o.yes+o.no),elements:{point:{radius:6,pointStyle:"circle"},line:{borderDash:[8,4]}}},t={label:"Exposed",borderColor:e.palette.success.main,backgroundColor:e.palette.success.main,data:p(i,s,o=>o.yes),elements:{point:{radius:6,pointStyle:"triangle"}}},r={label:"Not exposed",borderColor:e.palette.error.main,backgroundColor:e.palette.error.main,data:p(i,s,o=>o.no),elements:{point:{radius:6,pointStyle:"triangle",pointRotation:180}}};return{datasets:[t,r,a]}},p=(e,i,s)=>e.map(a=>({x:a.timestamp,y:s(a),variants:a.variants||{}})),P=(e,i)=>{if(i===0)return"";const[s,a]=e,t=Math.floor(Number(a)/i*100);return`${a} (${t}%) - ${s}`},R=(e,i,s,a)=>({locale:a.locale,responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},color:e.palette.text.secondary,plugins:{tooltip:{backgroundColor:e.palette.background.paper,bodyColor:e.palette.text.primary,titleColor:e.palette.text.secondary,borderColor:e.palette.primary.main,borderWidth:1,padding:10,boxPadding:5,usePointStyle:!0,itemSort:(t,r)=>{const o=["Total requests","Exposed","Not exposed"],l=o.indexOf(t.dataset.label),n=o.indexOf(r.dataset.label);return l-n},callbacks:{label:t=>`${t.formattedValue} - ${t.dataset.label}`,afterLabel:t=>{const r=t.dataset.data[t.dataIndex];if(t.dataset.label!=="Exposed"||r.variants===void 0)return"";const{disabled:o,...l}=r.variants;return Object.entries(l).map(n=>P(n,r.y)).join(`
2
- `)},title:t=>`Time: ${s>48?m(t[0].parsed.x,a.locale,"UTC"):u(t[0].parsed.x,a.locale)}`}},legend:{position:"top",align:"end",labels:{boxWidth:10,boxHeight:10,usePointStyle:!0}},title:{text:h(s),position:"top",align:"start",display:!0,font:{size:16,weight:"400"},color:e.palette.text.primary}},scales:{y:{type:"linear",title:{display:!0,text:"Number of requests",color:e.palette.text.secondary},suggestedMin:0,ticks:{precision:0,color:e.palette.text.secondary},grid:{color:e.palette.divider,borderColor:e.palette.divider}},x:{type:"time",time:{unit:s>48?"day":"hour"},grid:{display:!1},ticks:{callback:(t,r,o)=>s>48?x(o[r].value,a.locale,"UTC"):u(o[r].value,a.locale),color:e.palette.text.secondary}}}}),h=e=>e===1?"Requests in the last hour":`Requests in the last ${$(e)}`;c.font={...c.font,family:"Sen",size:13,weight:"400"};const I=({metrics:e,hoursBack:i,statsSectionId:s})=>{const a=g(),{locationSettings:t}=f(),r=d.useMemo(()=>[...e].sort((n,y)=>n.timestamp.localeCompare(y.timestamp)),[e]),o=d.useMemo(()=>R(a,r,i,t),[a,r,i,t]),l=d.useMemo(()=>O(a,r,t),[a,r,t]);return b.jsx("div",{style:{height:400},children:b.jsx(C,{options:o,data:l,"aria-label":"A feature metrics line chart, with three lines: all requests, positive requests, and negative requests.","aria-describedby":s})})};v.register(M,S,j,q,T,D,E,L);export{I as FeatureMetricsChart,I as default};