unleash-server 8.0.0 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/dist/lib/addons/addon.d.ts +10 -2
  2. package/dist/lib/addons/addon.d.ts.map +1 -1
  3. package/dist/lib/addons/addon.js +104 -6
  4. package/dist/lib/addons/addon.js.map +1 -1
  5. package/dist/lib/addons/datadog-definition.js +1 -1
  6. package/dist/lib/addons/datadog-definition.js.map +1 -1
  7. package/dist/lib/addons/datadog.test.js +2 -0
  8. package/dist/lib/addons/datadog.test.js.map +1 -1
  9. package/dist/lib/addons/index.d.ts.map +1 -1
  10. package/dist/lib/addons/index.js +2 -0
  11. package/dist/lib/addons/index.js.map +1 -1
  12. package/dist/lib/addons/new-relic.d.ts.map +1 -1
  13. package/dist/lib/addons/new-relic.js +0 -1
  14. package/dist/lib/addons/new-relic.js.map +1 -1
  15. package/dist/lib/addons/new-relic.test.js +0 -1
  16. package/dist/lib/addons/new-relic.test.js.map +1 -1
  17. package/dist/lib/addons/slack.test.js +1 -2
  18. package/dist/lib/addons/slack.test.js.map +1 -1
  19. package/dist/lib/addons/teams-definition.d.ts.map +1 -1
  20. package/dist/lib/addons/teams-definition.js +1 -0
  21. package/dist/lib/addons/teams-definition.js.map +1 -1
  22. package/dist/lib/addons/teams-workflow-definition.d.ts +4 -0
  23. package/dist/lib/addons/teams-workflow-definition.d.ts.map +1 -0
  24. package/dist/lib/addons/teams-workflow-definition.js +66 -0
  25. package/dist/lib/addons/teams-workflow-definition.js.map +1 -0
  26. package/dist/lib/addons/teams-workflow.d.ts +15 -0
  27. package/dist/lib/addons/teams-workflow.d.ts.map +1 -0
  28. package/dist/lib/addons/teams-workflow.js +110 -0
  29. package/dist/lib/addons/teams-workflow.js.map +1 -0
  30. package/dist/lib/addons/teams-workflow.test.d.ts +2 -0
  31. package/dist/lib/addons/teams-workflow.test.d.ts.map +1 -0
  32. package/dist/lib/addons/teams-workflow.test.js +202 -0
  33. package/dist/lib/addons/teams-workflow.test.js.map +1 -0
  34. package/dist/lib/addons/teams.d.ts.map +1 -1
  35. package/dist/lib/addons/teams.js +0 -1
  36. package/dist/lib/addons/teams.js.map +1 -1
  37. package/dist/lib/addons/teams.test.js +0 -1
  38. package/dist/lib/addons/teams.test.js.map +1 -1
  39. package/dist/lib/addons/validate-url.d.ts +18 -0
  40. package/dist/lib/addons/validate-url.d.ts.map +1 -0
  41. package/dist/lib/addons/validate-url.js +93 -0
  42. package/dist/lib/addons/validate-url.js.map +1 -0
  43. package/dist/lib/addons/validate-url.test.d.ts +2 -0
  44. package/dist/lib/addons/validate-url.test.d.ts.map +1 -0
  45. package/dist/lib/addons/validate-url.test.js +199 -0
  46. package/dist/lib/addons/validate-url.test.js.map +1 -0
  47. package/dist/lib/create-config.d.ts.map +1 -1
  48. package/dist/lib/create-config.js +7 -0
  49. package/dist/lib/create-config.js.map +1 -1
  50. package/dist/lib/db/session-store.d.ts +1 -0
  51. package/dist/lib/db/session-store.d.ts.map +1 -1
  52. package/dist/lib/db/session-store.js +6 -0
  53. package/dist/lib/db/session-store.js.map +1 -1
  54. package/dist/lib/error/bad-data-error.d.ts.map +1 -1
  55. package/dist/lib/error/bad-data-error.js +10 -2
  56. package/dist/lib/error/bad-data-error.js.map +1 -1
  57. package/dist/lib/error/unleash-error.test.js +23 -0
  58. package/dist/lib/error/unleash-error.test.js.map +1 -1
  59. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
  60. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js +2 -0
  61. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
  62. package/dist/lib/features/constraints/constraints-controller.d.ts.map +1 -1
  63. package/dist/lib/features/constraints/constraints-controller.js +1 -0
  64. package/dist/lib/features/constraints/constraints-controller.js.map +1 -1
  65. package/dist/lib/features/context/context.d.ts.map +1 -1
  66. package/dist/lib/features/context/context.js +3 -1
  67. package/dist/lib/features/context/context.js.map +1 -1
  68. package/dist/lib/features/dependent-features/dependent-features-controller.d.ts.map +1 -1
  69. package/dist/lib/features/dependent-features/dependent-features-controller.js +6 -0
  70. package/dist/lib/features/dependent-features/dependent-features-controller.js.map +1 -1
  71. package/dist/lib/features/environments/environments-controller.d.ts.map +1 -1
  72. package/dist/lib/features/environments/environments-controller.js +6 -0
  73. package/dist/lib/features/environments/environments-controller.js.map +1 -1
  74. package/dist/lib/features/events/event-search-controller.d.ts.map +1 -1
  75. package/dist/lib/features/events/event-search-controller.js +1 -0
  76. package/dist/lib/features/events/event-search-controller.js.map +1 -1
  77. package/dist/lib/features/export-import-toggles/export-import-controller.d.ts.map +1 -1
  78. package/dist/lib/features/export-import-toggles/export-import-controller.js +3 -0
  79. package/dist/lib/features/export-import-toggles/export-import-controller.js.map +1 -1
  80. package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
  81. package/dist/lib/features/feature-search/feature-search-controller.js +1 -0
  82. package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
  83. package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
  84. package/dist/lib/features/feature-search/feature-search-service.js +5 -0
  85. package/dist/lib/features/feature-search/feature-search-service.js.map +1 -1
  86. package/dist/lib/features/feature-search/feature-search-store.d.ts +1 -1
  87. package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
  88. package/dist/lib/features/feature-search/feature-search-store.js +60 -10
  89. package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
  90. package/dist/lib/features/feature-search/feature.search.e2e.test.js +77 -0
  91. package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
  92. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.d.ts.map +1 -1
  93. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js +2 -0
  94. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js.map +1 -1
  95. package/dist/lib/features/feature-toggle/feature-toggle-controller.d.ts.map +1 -1
  96. package/dist/lib/features/feature-toggle/feature-toggle-controller.js +21 -0
  97. package/dist/lib/features/feature-toggle/feature-toggle-controller.js.map +1 -1
  98. package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.d.ts.map +1 -1
  99. package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.js +5 -0
  100. package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.js.map +1 -1
  101. package/dist/lib/features/frontend-api/frontend-api-controller.d.ts.map +1 -1
  102. package/dist/lib/features/frontend-api/frontend-api-controller.js +4 -0
  103. package/dist/lib/features/frontend-api/frontend-api-controller.js.map +1 -1
  104. package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
  105. package/dist/lib/features/frontend-api/frontend-api-service.js +17 -20
  106. package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
  107. package/dist/lib/features/maintenance/maintenance-controller.d.ts.map +1 -1
  108. package/dist/lib/features/maintenance/maintenance-controller.js +2 -0
  109. package/dist/lib/features/maintenance/maintenance-controller.js.map +1 -1
  110. package/dist/lib/features/metrics/client-metrics/client-metrics.d.ts.map +1 -1
  111. package/dist/lib/features/metrics/client-metrics/client-metrics.js +2 -0
  112. package/dist/lib/features/metrics/client-metrics/client-metrics.js.map +1 -1
  113. package/dist/lib/features/metrics/custom/custom-metrics-controller.d.ts.map +1 -1
  114. package/dist/lib/features/metrics/custom/custom-metrics-controller.js +2 -0
  115. package/dist/lib/features/metrics/custom/custom-metrics-controller.js.map +1 -1
  116. package/dist/lib/features/metrics/instance/metrics.d.ts.map +1 -1
  117. package/dist/lib/features/metrics/instance/metrics.js +3 -0
  118. package/dist/lib/features/metrics/instance/metrics.js.map +1 -1
  119. package/dist/lib/features/metrics/instance/register.d.ts.map +1 -1
  120. package/dist/lib/features/metrics/instance/register.js +1 -0
  121. package/dist/lib/features/metrics/instance/register.js.map +1 -1
  122. package/dist/lib/features/metrics/integrations/integration-metrics.d.ts +1 -1
  123. package/dist/lib/features/metrics/integrations/integration-metrics.d.ts.map +1 -1
  124. package/dist/lib/features/metrics/integrations/integration-metrics.js +2 -0
  125. package/dist/lib/features/metrics/integrations/integration-metrics.js.map +1 -1
  126. package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.d.ts.map +1 -1
  127. package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.js +1 -0
  128. package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.js.map +1 -1
  129. package/dist/lib/features/playground/playground.d.ts.map +1 -1
  130. package/dist/lib/features/playground/playground.js +2 -0
  131. package/dist/lib/features/playground/playground.js.map +1 -1
  132. package/dist/lib/features/project/project-controller.d.ts.map +1 -1
  133. package/dist/lib/features/project/project-controller.js +6 -0
  134. package/dist/lib/features/project/project-controller.js.map +1 -1
  135. package/dist/lib/features/project-environments/project-environments-controller.d.ts.map +1 -1
  136. package/dist/lib/features/project-environments/project-environments-controller.js +3 -0
  137. package/dist/lib/features/project-environments/project-environments-controller.js.map +1 -1
  138. package/dist/lib/features/project-insights/project-insights-controller.d.ts.map +1 -1
  139. package/dist/lib/features/project-insights/project-insights-controller.js +1 -0
  140. package/dist/lib/features/project-insights/project-insights-controller.js.map +1 -1
  141. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.d.ts.map +1 -1
  142. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.js +5 -2
  143. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.js.map +1 -1
  144. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.test.js +34 -0
  145. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.test.js.map +1 -1
  146. package/dist/lib/features/segment/segment-controller.d.ts.map +1 -1
  147. package/dist/lib/features/segment/segment-controller.js +9 -0
  148. package/dist/lib/features/segment/segment-controller.js.map +1 -1
  149. package/dist/lib/features/tag-type/tag-type.d.ts.map +1 -1
  150. package/dist/lib/features/tag-type/tag-type.js +6 -0
  151. package/dist/lib/features/tag-type/tag-type.js.map +1 -1
  152. package/dist/lib/features/ui-observability-controller/ui-observability-controller.d.ts.map +1 -1
  153. package/dist/lib/features/ui-observability-controller/ui-observability-controller.js +1 -0
  154. package/dist/lib/features/ui-observability-controller/ui-observability-controller.js.map +1 -1
  155. package/dist/lib/middleware/secure-headers.d.ts.map +1 -1
  156. package/dist/lib/middleware/secure-headers.js +20 -1
  157. package/dist/lib/middleware/secure-headers.js.map +1 -1
  158. package/dist/lib/openapi/spec/addon-create-update-schema.d.ts +1 -1
  159. package/dist/lib/openapi/spec/addon-create-update-schema.js +1 -1
  160. package/dist/lib/openapi/spec/addons-schema.d.ts +15 -0
  161. package/dist/lib/openapi/spec/addons-schema.d.ts.map +1 -1
  162. package/dist/lib/openapi/spec/addons-schema.js +51 -0
  163. package/dist/lib/openapi/spec/addons-schema.js.map +1 -1
  164. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +3 -2
  165. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
  166. package/dist/lib/openapi/spec/feature-search-query-parameters.js +3 -2
  167. package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
  168. package/dist/lib/openapi/spec/profile-schema.d.ts +6 -1
  169. package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
  170. package/dist/lib/openapi/spec/profile-schema.js +13 -1
  171. package/dist/lib/openapi/spec/profile-schema.js.map +1 -1
  172. package/dist/lib/openapi/spec/profile-schema.test.js +1 -0
  173. package/dist/lib/openapi/spec/profile-schema.test.js.map +1 -1
  174. package/dist/lib/openapi/util/api-operation.d.ts +1 -1
  175. package/dist/lib/openapi/util/api-stability.js +1 -1
  176. package/dist/lib/openapi/util/api-stability.test.js +8 -5
  177. package/dist/lib/openapi/util/api-stability.test.js.map +1 -1
  178. package/dist/lib/routes/admin-api/addon.d.ts.map +1 -1
  179. package/dist/lib/routes/admin-api/addon.js +12 -2
  180. package/dist/lib/routes/admin-api/addon.js.map +1 -1
  181. package/dist/lib/routes/admin-api/api-token.d.ts.map +1 -1
  182. package/dist/lib/routes/admin-api/api-token.js +5 -0
  183. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  184. package/dist/lib/routes/admin-api/event.d.ts.map +1 -1
  185. package/dist/lib/routes/admin-api/event.js +3 -0
  186. package/dist/lib/routes/admin-api/event.js.map +1 -1
  187. package/dist/lib/routes/admin-api/favorites.d.ts.map +1 -1
  188. package/dist/lib/routes/admin-api/favorites.js +4 -0
  189. package/dist/lib/routes/admin-api/favorites.js.map +1 -1
  190. package/dist/lib/routes/admin-api/feature-type.d.ts.map +1 -1
  191. package/dist/lib/routes/admin-api/feature-type.js +2 -0
  192. package/dist/lib/routes/admin-api/feature-type.js.map +1 -1
  193. package/dist/lib/routes/admin-api/instance-admin.d.ts.map +1 -1
  194. package/dist/lib/routes/admin-api/instance-admin.js +2 -0
  195. package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
  196. package/dist/lib/routes/admin-api/metrics.d.ts.map +1 -1
  197. package/dist/lib/routes/admin-api/metrics.js +7 -0
  198. package/dist/lib/routes/admin-api/metrics.js.map +1 -1
  199. package/dist/lib/routes/admin-api/project/api-token.d.ts.map +1 -1
  200. package/dist/lib/routes/admin-api/project/api-token.js +3 -0
  201. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  202. package/dist/lib/routes/admin-api/project/health-report.d.ts.map +1 -1
  203. package/dist/lib/routes/admin-api/project/health-report.js +1 -0
  204. package/dist/lib/routes/admin-api/project/health-report.js.map +1 -1
  205. package/dist/lib/routes/admin-api/project/project-archive.d.ts.map +1 -1
  206. package/dist/lib/routes/admin-api/project/project-archive.js +4 -0
  207. package/dist/lib/routes/admin-api/project/project-archive.js.map +1 -1
  208. package/dist/lib/routes/admin-api/project/variants.d.ts.map +1 -1
  209. package/dist/lib/routes/admin-api/project/variants.js +4 -0
  210. package/dist/lib/routes/admin-api/project/variants.js.map +1 -1
  211. package/dist/lib/routes/admin-api/public-signup.d.ts.map +1 -1
  212. package/dist/lib/routes/admin-api/public-signup.js +4 -0
  213. package/dist/lib/routes/admin-api/public-signup.js.map +1 -1
  214. package/dist/lib/routes/admin-api/strategy.d.ts.map +1 -1
  215. package/dist/lib/routes/admin-api/strategy.js +7 -0
  216. package/dist/lib/routes/admin-api/strategy.js.map +1 -1
  217. package/dist/lib/routes/admin-api/tag.d.ts.map +1 -1
  218. package/dist/lib/routes/admin-api/tag.js +5 -0
  219. package/dist/lib/routes/admin-api/tag.js.map +1 -1
  220. package/dist/lib/routes/admin-api/telemetry.d.ts.map +1 -1
  221. package/dist/lib/routes/admin-api/telemetry.js +1 -0
  222. package/dist/lib/routes/admin-api/telemetry.js.map +1 -1
  223. package/dist/lib/routes/admin-api/user/pat.d.ts.map +1 -1
  224. package/dist/lib/routes/admin-api/user/pat.js +3 -0
  225. package/dist/lib/routes/admin-api/user/pat.js.map +1 -1
  226. package/dist/lib/routes/admin-api/user/user.d.ts.map +1 -1
  227. package/dist/lib/routes/admin-api/user/user.js +11 -2
  228. package/dist/lib/routes/admin-api/user/user.js.map +1 -1
  229. package/dist/lib/routes/admin-api/user/user.test.js +56 -6
  230. package/dist/lib/routes/admin-api/user/user.test.js.map +1 -1
  231. package/dist/lib/routes/admin-api/user-admin.d.ts.map +1 -1
  232. package/dist/lib/routes/admin-api/user-admin.js +12 -0
  233. package/dist/lib/routes/admin-api/user-admin.js.map +1 -1
  234. package/dist/lib/routes/admin-api/user-feedback.d.ts.map +1 -1
  235. package/dist/lib/routes/admin-api/user-feedback.js +2 -0
  236. package/dist/lib/routes/admin-api/user-feedback.js.map +1 -1
  237. package/dist/lib/routes/admin-api/user-splash.d.ts.map +1 -1
  238. package/dist/lib/routes/admin-api/user-splash.js +1 -0
  239. package/dist/lib/routes/admin-api/user-splash.js.map +1 -1
  240. package/dist/lib/routes/auth/reset-password-controller.d.ts.map +1 -1
  241. package/dist/lib/routes/auth/reset-password-controller.js +4 -0
  242. package/dist/lib/routes/auth/reset-password-controller.js.map +1 -1
  243. package/dist/lib/routes/auth/simple-password-provider.d.ts.map +1 -1
  244. package/dist/lib/routes/auth/simple-password-provider.js +1 -0
  245. package/dist/lib/routes/auth/simple-password-provider.js.map +1 -1
  246. package/dist/lib/routes/edge-api/index.d.ts.map +1 -1
  247. package/dist/lib/routes/edge-api/index.js +1 -0
  248. package/dist/lib/routes/edge-api/index.js.map +1 -1
  249. package/dist/lib/routes/health-check.d.ts.map +1 -1
  250. package/dist/lib/routes/health-check.js +1 -0
  251. package/dist/lib/routes/health-check.js.map +1 -1
  252. package/dist/lib/routes/public-invite.d.ts.map +1 -1
  253. package/dist/lib/routes/public-invite.js +2 -0
  254. package/dist/lib/routes/public-invite.js.map +1 -1
  255. package/dist/lib/routes/ready-check.d.ts.map +1 -1
  256. package/dist/lib/routes/ready-check.js +1 -0
  257. package/dist/lib/routes/ready-check.js.map +1 -1
  258. package/dist/lib/routes/util.d.ts.map +1 -1
  259. package/dist/lib/routes/util.js +8 -1
  260. package/dist/lib/routes/util.js.map +1 -1
  261. package/dist/lib/routes/util.test.d.ts +2 -0
  262. package/dist/lib/routes/util.test.d.ts.map +1 -0
  263. package/dist/lib/routes/util.test.js +18 -0
  264. package/dist/lib/routes/util.test.js.map +1 -0
  265. package/dist/lib/schema/html-input.d.ts +4 -0
  266. package/dist/lib/schema/html-input.d.ts.map +1 -0
  267. package/dist/lib/schema/html-input.js +38 -0
  268. package/dist/lib/schema/html-input.js.map +1 -0
  269. package/dist/lib/schema/html-input.test.d.ts +2 -0
  270. package/dist/lib/schema/html-input.test.d.ts.map +1 -0
  271. package/dist/lib/schema/html-input.test.js +98 -0
  272. package/dist/lib/schema/html-input.test.js.map +1 -0
  273. package/dist/lib/server-impl.d.ts +2 -1
  274. package/dist/lib/server-impl.d.ts.map +1 -1
  275. package/dist/lib/server-impl.js +2 -1
  276. package/dist/lib/server-impl.js.map +1 -1
  277. package/dist/lib/services/addon-service.d.ts +8 -1
  278. package/dist/lib/services/addon-service.d.ts.map +1 -1
  279. package/dist/lib/services/addon-service.js +24 -1
  280. package/dist/lib/services/addon-service.js.map +1 -1
  281. package/dist/lib/services/addon-service.test.js +75 -8
  282. package/dist/lib/services/addon-service.test.js.map +1 -1
  283. package/dist/lib/services/openapi-service.d.ts +2 -6
  284. package/dist/lib/services/openapi-service.d.ts.map +1 -1
  285. package/dist/lib/services/openapi-service.js.map +1 -1
  286. package/dist/lib/services/project-schema.d.ts +1 -2
  287. package/dist/lib/services/project-schema.d.ts.map +1 -1
  288. package/dist/lib/services/project-schema.js +4 -2
  289. package/dist/lib/services/project-schema.js.map +1 -1
  290. package/dist/lib/services/session-service.d.ts +6 -0
  291. package/dist/lib/services/session-service.d.ts.map +1 -1
  292. package/dist/lib/services/session-service.js +8 -0
  293. package/dist/lib/services/session-service.js.map +1 -1
  294. package/dist/lib/services/user-service.d.ts +18 -5
  295. package/dist/lib/services/user-service.d.ts.map +1 -1
  296. package/dist/lib/services/user-service.js +27 -7
  297. package/dist/lib/services/user-service.js.map +1 -1
  298. package/dist/lib/services/user-service.test.js +68 -0
  299. package/dist/lib/services/user-service.test.js.map +1 -1
  300. package/dist/lib/types/experimental.d.ts +1 -1
  301. package/dist/lib/types/experimental.d.ts.map +1 -1
  302. package/dist/lib/types/experimental.js +23 -2
  303. package/dist/lib/types/experimental.js.map +1 -1
  304. package/dist/lib/types/model.d.ts +2 -0
  305. package/dist/lib/types/model.d.ts.map +1 -1
  306. package/dist/lib/types/model.js.map +1 -1
  307. package/dist/lib/types/option.d.ts +4 -0
  308. package/dist/lib/types/option.d.ts.map +1 -1
  309. package/dist/lib/types/stores/session-store.d.ts +1 -0
  310. package/dist/lib/types/stores/session-store.d.ts.map +1 -1
  311. package/dist/lib/ui-config/ui-config-controller.d.ts.map +1 -1
  312. package/dist/lib/ui-config/ui-config-controller.js +2 -0
  313. package/dist/lib/ui-config/ui-config-controller.js.map +1 -1
  314. package/dist/lib/ui-config/ui-config-service.d.ts.map +1 -1
  315. package/dist/lib/ui-config/ui-config-service.js +4 -2
  316. package/dist/lib/ui-config/ui-config-service.js.map +1 -1
  317. package/dist/lib/ui-config/ui-config.test.js +21 -2
  318. package/dist/lib/ui-config/ui-config.test.js.map +1 -1
  319. package/dist/lib/users/inactive/inactive-users-controller.d.ts.map +1 -1
  320. package/dist/lib/users/inactive/inactive-users-controller.js +2 -0
  321. package/dist/lib/users/inactive/inactive-users-controller.js.map +1 -1
  322. package/dist/lib/util/anonymise.d.ts +1 -0
  323. package/dist/lib/util/anonymise.d.ts.map +1 -1
  324. package/dist/lib/util/anonymise.js +3 -0
  325. package/dist/lib/util/anonymise.js.map +1 -1
  326. package/dist/lib/util/anonymise.test.js +4 -1
  327. package/dist/lib/util/anonymise.test.js.map +1 -1
  328. package/dist/migrations/20260617115403-update-flag-descriptions.d.ts +3 -0
  329. package/dist/migrations/20260617115403-update-flag-descriptions.d.ts.map +1 -0
  330. package/dist/migrations/20260617115403-update-flag-descriptions.js +38 -0
  331. package/dist/migrations/20260617115403-update-flag-descriptions.js.map +1 -0
  332. package/dist/migrations/20260624120000-servicenow-change-references.d.ts +3 -0
  333. package/dist/migrations/20260624120000-servicenow-change-references.d.ts.map +1 -0
  334. package/dist/migrations/20260624120000-servicenow-change-references.js +22 -0
  335. package/dist/migrations/20260624120000-servicenow-change-references.js.map +1 -0
  336. package/dist/server-dev.js +6 -1
  337. package/dist/server-dev.js.map +1 -1
  338. package/dist/test/e2e/api/admin/addon.e2e.test.js +2 -1
  339. package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
  340. package/dist/test/e2e/services/addon-service.e2e.test.js +2 -0
  341. package/dist/test/e2e/services/addon-service.e2e.test.js.map +1 -1
  342. package/dist/test/e2e/services/session-service.e2e.test.js +11 -0
  343. package/dist/test/e2e/services/session-service.e2e.test.js.map +1 -1
  344. package/dist/test/fixtures/fake-session-store.d.ts +1 -0
  345. package/dist/test/fixtures/fake-session-store.d.ts.map +1 -1
  346. package/dist/test/fixtures/fake-session-store.js +3 -0
  347. package/dist/test/fixtures/fake-session-store.js.map +1 -1
  348. package/frontend/build/index.html +2 -2
  349. package/frontend/build/static/AccordionSummary-wye3oOm6.js +1 -0
  350. package/frontend/build/static/AdvancedPlayground-DdeMb-6I.js +3 -0
  351. package/frontend/build/static/Alert-_bLyWbvx.js +1 -0
  352. package/frontend/build/static/BackendConnections-kgR0xyIH.js +1 -0
  353. package/frontend/build/static/Box-BQsxfFmC.js +1 -0
  354. package/frontend/build/static/Button-CebB8EPB.js +1 -0
  355. package/frontend/build/static/CircularProgress-C_LUU3DK.js +101 -0
  356. package/frontend/build/static/Close-DyTASMSq.js +1 -0
  357. package/frontend/build/static/Collapse-DPPTUMpf.js +1 -0
  358. package/frontend/build/static/ConditionallyRender---uTpMBn.js +1 -0
  359. package/frontend/build/static/CreateProject-BSlg0WYM.js +1 -0
  360. package/frontend/build/static/Dialog-C-xQxqWX.js +1 -0
  361. package/frontend/build/static/DialogWithAside-DzCSDyWo.js +1110 -0
  362. package/frontend/build/static/Divider-CsdWvu5F.js +1 -0
  363. package/frontend/build/static/EnterpriseEdge-CjslqYDM.js +6 -0
  364. package/frontend/build/static/FeatureMetricsChart-B4WryxcW.js +2 -0
  365. package/frontend/build/static/FeatureStaleDialog-EzReRTI5.js +8 -0
  366. package/frontend/build/static/FeatureViewLazyExport-8eQKTvdS.js +10 -0
  367. package/frontend/build/static/FileCopy-B8HZEA83.js +1 -0
  368. package/frontend/build/static/FlagMetricsChart-hNQuwOxW.js +2 -0
  369. package/frontend/build/static/FormControlLabel-F5gDLixN.js +1 -0
  370. package/frontend/build/static/FrontendNetworkTrafficUsage-pcr83PWo.js +1 -0
  371. package/frontend/build/static/GridLayoutWrapper-B_YyjZ7l.js +5 -0
  372. package/frontend/build/static/Grow-BIbmvKVy.js +1 -0
  373. package/frontend/build/static/HelpOutlineOutlined-CpMsVJZu.js +1 -0
  374. package/frontend/build/static/Highlighter-MomUaQww.js +1 -0
  375. package/frontend/build/static/HtmlTooltip-B9jv1G1R.js +1 -0
  376. package/frontend/build/static/ImpactMetricsPage-DGH_S9oz.js +1 -0
  377. package/frontend/build/static/ImpactViewsPage-DZqKPFvE.js +1 -0
  378. package/frontend/build/static/LazyAdminExport-B1ReAViz.js +38 -0
  379. package/frontend/build/static/LazyProjectExport-BMVcGpNI.js +46 -0
  380. package/frontend/build/static/LifecycleChartComponent-BeoRUO9q.js +2 -0
  381. package/frontend/build/static/LineChartComponent-BbCMbJ-m.js +1 -0
  382. package/frontend/build/static/Link-CfIScd2f.js +1 -0
  383. package/frontend/build/static/Loader-DdgXftPc.js +1 -0
  384. package/frontend/build/static/{LogRocketRunner-D_e4hzJQ.js → LogRocketRunner-Duzg1Kzh.js} +4 -4
  385. package/frontend/build/static/Logo-nextjs-DCzT4YXr.svg +1 -0
  386. package/frontend/build/static/Logo-react-CyIpikqs.svg +10 -0
  387. package/frontend/build/static/Logo-reactnative-DZ9HKW2l.svg +10 -0
  388. package/frontend/build/static/MarkCompletedDialogue-CcXyp8UE.js +1 -0
  389. package/frontend/build/static/NetworkOverview-0mBnFAZX.js +1 -0
  390. package/frontend/build/static/NetworkPrometheusAPIWarning-Bq62ygkV.js +1 -0
  391. package/frontend/build/static/NetworkTraffic-DmG5Iv25.js +1 -0
  392. package/frontend/build/static/NetworkTrafficUsage-DccaVLYs.js +1 -0
  393. package/frontend/build/static/OnboardingProgress-Bp9sZ-ZM.js +1 -0
  394. package/frontend/build/static/PageContent-c0NDm5oD.js +1 -0
  395. package/frontend/build/static/PercentageDonut-DBDGNJlh.js +1 -0
  396. package/frontend/build/static/PermissionButton-B-IfzChn.js +1 -0
  397. package/frontend/build/static/Popover-CUTnSn2h.js +1 -0
  398. package/frontend/build/static/Radio-DL8ja0ll.js +1 -0
  399. package/frontend/build/static/RadioGroup-Ci3WHaOy.js +1 -0
  400. package/frontend/build/static/ReactJSONEditor-DeBI7JPg.js +4 -0
  401. package/frontend/build/static/RoleCell-DhYvu4YH.js +1 -0
  402. package/frontend/build/static/Safeguard-DErU6fSK.js +1 -0
  403. package/frontend/build/static/SelectSdk-Dr_pzQgX.js +2 -0
  404. package/frontend/build/static/StoriesPage-frGP1Bfr.js +2 -0
  405. package/frontend/build/static/SwitchBase-DWPIxZnN.js +1 -0
  406. package/frontend/build/static/TextField-oipjeg6n.js +3 -0
  407. package/frontend/build/static/Tooltip-BaILXXti.js +1 -0
  408. package/frontend/build/static/TooltipResolver-4A1YhwBy.js +1 -0
  409. package/frontend/build/static/Truncator-D2bO9ub6.js +1 -0
  410. package/frontend/build/static/Typography-BTdLWIUX.js +1 -0
  411. package/frontend/build/static/aggregateFeatureMetrics-B-67HaIZ.js +1 -0
  412. package/frontend/build/static/chartjs-plugin-annotation.esm-DP4wCpdA.js +1 -0
  413. package/frontend/build/static/chunk-QUQL4437-Dr42NpoL.js +3 -0
  414. package/frontend/build/static/createBox-Cf2UJsmc.js +1 -0
  415. package/frontend/build/static/createLocalStorage-WS-MCMlG.js +1 -0
  416. package/frontend/build/static/createSimplePaletteValueFilter-BRAMrHWJ.js +1 -0
  417. package/frontend/build/static/differenceInSeconds-DMZGQwjK.js +1 -0
  418. package/frontend/build/static/dividerClasses-Cc45lyWo.js +1 -0
  419. package/frontend/build/static/endOfMonth-CkSR_DAx.js +1 -0
  420. package/frontend/build/static/{enterpriseEdgeCloud-DtcZf9iv.js → enterpriseEdgeCloud-C5u35XAw.js} +1 -1
  421. package/frontend/build/static/esm-DdgY1Q5s.js +12 -0
  422. package/frontend/build/static/format-C8UVjLNw.js +1 -0
  423. package/frontend/build/static/formatDate-cFuM4JYl.js +1 -0
  424. package/frontend/build/static/formatDistanceToNow-CyouiCIY.js +1 -0
  425. package/frontend/build/static/httpErrorResponseHandler-FMtt7Zqh.js +1 -0
  426. package/frontend/build/static/{impact-metrics-icon-1LLLS-bG.js → impact-metrics-icon-6dt-ye-h.js} +1 -1
  427. package/frontend/build/static/index-C04TEs4k.js +290 -0
  428. package/frontend/build/static/jsx-runtime-BnvnyDTF.js +1 -0
  429. package/frontend/build/static/metricsFormatters-DhX-aU17.js +1 -0
  430. package/frontend/build/static/mui-CoU2c-id.js +5 -0
  431. package/frontend/build/static/networkTrafficUsageHighlightPlugin-DlOtHZg3.js +1 -0
  432. package/frontend/build/static/parse-Chj4PyAg.js +1 -0
  433. package/frontend/build/static/parseISO-Cup6hyvQ.js +1 -0
  434. package/frontend/build/static/{react-DW1tWzGJ.js → react-GZhdek4G.js} +1 -1
  435. package/frontend/build/static/startOfHour-P0Sr6h8e.js +1 -0
  436. package/frontend/build/static/testIds-B_Ev-uQn.js +1 -0
  437. package/frontend/build/static/themeStyles-DGVpwkcv.js +1 -0
  438. package/frontend/build/static/useApiGetter-7FP8Avm4.js +1 -0
  439. package/frontend/build/static/useApiTokens-C8Dqw_X1.js +1 -0
  440. package/frontend/build/static/useConditionalSWR-DGgzun6i.js +1 -0
  441. package/frontend/build/static/useConditionallyHiddenColumns-C5q9zdfJ.js +5 -0
  442. package/frontend/build/static/useCustomEvent-Dj2V5RVb.js +1 -0
  443. package/frontend/build/static/useEnvironments-CTguhgy0.js +2 -0
  444. package/frontend/build/static/useGroupedImpactMetricsData-CW9qnV2y.js +1 -0
  445. package/frontend/build/static/useImpactMetrics-9qDSEpTn.js +3 -0
  446. package/frontend/build/static/useImpactMetricsEnabled-wRNO6-Oh.js +1 -0
  447. package/frontend/build/static/useInstanceTrafficMetrics-CRCDB4TX.js +1 -0
  448. package/frontend/build/static/useMediaQuery-DGx8zAkf.js +2 -0
  449. package/frontend/build/static/useOptionalPathParam-Cx3ru9yC.js +1 -0
  450. package/frontend/build/static/usePageTitle-CHzzFshF.js +1 -0
  451. package/frontend/build/static/useTheme-CQqAmDLr.js +9 -0
  452. package/frontend/build/static/useUiConfig-DbVjTDpE.js +1 -0
  453. package/frontend/package.json +13 -13
  454. package/package.json +13 -11
  455. package/frontend/build/static/AdvancedPlayground-Dc5CjsH6.js +0 -3
  456. package/frontend/build/static/BackendConnections-BzoyVkqE.js +0 -1
  457. package/frontend/build/static/CreateProject-CARqyXgr.js +0 -1
  458. package/frontend/build/static/DialogWithAside-CtKlvRxJ.js +0 -947
  459. package/frontend/build/static/EnterpriseEdge-6F99gSET.js +0 -6
  460. package/frontend/build/static/FeatureMetricsChart-CCUsCbvl.js +0 -2
  461. package/frontend/build/static/FeatureStaleDialog-IRgDg5x8.js +0 -8
  462. package/frontend/build/static/FeatureViewLazyExport-7dlvG8T-.js +0 -10
  463. package/frontend/build/static/FlagMetricsChart-CQCEqI6k.js +0 -2
  464. package/frontend/build/static/FrontendNetworkTrafficUsage-CdHe-oU2.js +0 -1
  465. package/frontend/build/static/GridLayoutWrapper-L_W9K-dV.js +0 -3
  466. package/frontend/build/static/ImpactMetricsPage-0OKGAVog.js +0 -1
  467. package/frontend/build/static/ImpactViewsPage-CdwvIuE9.js +0 -1
  468. package/frontend/build/static/LazyAdminExport-lAWqz1Kg.js +0 -38
  469. package/frontend/build/static/LazyProjectExport-CjjWWq5H.js +0 -46
  470. package/frontend/build/static/LifecycleChartComponent-Dw7X54qU.js +0 -2
  471. package/frontend/build/static/LineChartComponent-D81JPWi4.js +0 -1
  472. package/frontend/build/static/Logo-react-D2SuVol5.svg +0 -1
  473. package/frontend/build/static/MarkCompletedDialogue-vW74sVuW.js +0 -1
  474. package/frontend/build/static/NetworkOverview-Dx3Yhmnr.js +0 -1
  475. package/frontend/build/static/NetworkPrometheusAPIWarning-BlbOSbDW.js +0 -1
  476. package/frontend/build/static/NetworkTraffic-CJI952Qr.js +0 -1
  477. package/frontend/build/static/NetworkTrafficUsage-DP83K2Q6.js +0 -1
  478. package/frontend/build/static/OnboardingProgress-DECLEUJE.js +0 -1
  479. package/frontend/build/static/PercentageDonut-CV__KCpE.js +0 -1
  480. package/frontend/build/static/ReactJSONEditor-D4-lWgEb.js +0 -4
  481. package/frontend/build/static/RoleCell-0_ZJUpz5.js +0 -1
  482. package/frontend/build/static/Safeguard-B93Tz6lG.js +0 -1
  483. package/frontend/build/static/SelectSdk-Cxw0QOfY.js +0 -2
  484. package/frontend/build/static/StoriesPage-ZDw2ahU0.js +0 -1
  485. package/frontend/build/static/aggregateFeatureMetrics-Byd95jx-.js +0 -1
  486. package/frontend/build/static/chart-CG3XAKw_.js +0 -3
  487. package/frontend/build/static/chartjs-plugin-annotation.esm-bUcqmHD4.js +0 -1
  488. package/frontend/build/static/esm-LYuUsJ00.js +0 -15
  489. package/frontend/build/static/index-DIBimazR.js +0 -409
  490. package/frontend/build/static/networkTrafficUsageHighlightPlugin-C8avnJ5K.js +0 -1
  491. package/frontend/build/static/objectId-CwvEBicG.js +0 -1
  492. package/frontend/build/static/useApiTokens-CdZD_-zn.js +0 -1
  493. package/frontend/build/static/useGroupedImpactMetricsData-D2KwIe7Z.js +0 -1
  494. package/frontend/build/static/useImpactMetricsEnabled-Yb36cM6y.js +0 -1
  495. package/frontend/build/static/useInstanceTrafficMetrics-CcZqSYy1.js +0 -1
  496. /package/frontend/build/static/{daysOrHours-DZ037Bzn.js → daysOrHours-owFAL-4S.js} +0 -0
  497. /package/frontend/build/static/{formatPath-vbOoY_VU.js → formatPath-j72gcKwy.js} +0 -0
  498. /package/frontend/build/static/{formatTickValue-xCLMih6P.js → formatTickValue-DWHZUXee.js} +0 -0
  499. /package/frontend/build/static/{storage-DS1Ts5PA.js → storage-tBZ25pJM.js} +0 -0
  500. /package/frontend/build/static/{toDate-JUEZGP0n.js → toDate-BEKdmfOu.js} +0 -0
  501. /package/frontend/build/static/{unknownify-D0N8k6Ch.js → unknownify-CCAQc7w1.js} +0 -0
@@ -1,6 +0,0 @@
1
- import{o as e,t}from"./react-DW1tWzGJ.js";import{n}from"./formatPath-vbOoY_VU.js";import{Ad as r,Jd as i,Ji as a,Jl as o,Kd as s,Md as c,Nd as l,Nt as ee,Qc as u,Ru as d,Td as f,Ul as p,Va as m,Vd as h,Wc as g,Yl as _,Zd as v,co as y,df as te,fc as ne,gc as b,gu as re,hd as ie,ho as ae,hu as oe,lc as se,oc as x,xf as S}from"./index-DIBimazR.js";import{t as C}from"./enterpriseEdgeCloud-DtcZf9iv.js";import{t as w}from"./unknownify-D0N8k6Ch.js";var T=e(t(),1),E={connectedEdges:[],revisionIds:[]},D=e=>{let{data:t,error:r,mutate:i}=_(n(`api/admin/metrics/edges`),O,e);return(0,T.useMemo)(()=>{let e=!r&&!t;return t?.connectedEdges===void 0?Array.isArray(t)?{edgeObservability:{connectedEdges:t,revisionIds:[]},loading:e,refetch:()=>i(),error:r}:{edgeObservability:E,loading:e,refetch:()=>i(),error:r}:{edgeObservability:t,loading:e,refetch:()=>i(),error:r}},[t,r,i])},O=e=>fetch(e).then(u(`Connected Edges`)).then(e=>e.json()),k=ee(),A=te(),j=h((0,A.jsx)(`path`,{d:`M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2`}),`Circle`),M=s(`table`)(({theme:e})=>({width:`100%`,borderCollapse:`collapse`,fontSize:e.fontSizes.smallerBody,"& > thead":{borderBottom:`1px solid ${e.palette.text.primary}`},"& tr":{textAlign:`right`,"& > th:first-of-type, td:first-of-type":{textAlign:`left`}}})),N=s(`tr`)(({theme:e})=>({fontWeight:e.fontWeight.bold,"&&& > td":{paddingTop:e.spacing(1),"& > div":{display:`flex`,alignItems:`center`}}})),P=({instance:e})=>(0,A.jsxs)(M,{children:[(0,A.jsx)(`thead`,{children:(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`th`,{children:`Latency (ms)`}),(0,A.jsx)(`th`,{children:`Avg`}),(0,A.jsx)(`th`,{children:`p99`})]})}),(0,A.jsxs)(`tbody`,{children:[(0,A.jsx)(N,{children:(0,A.jsx)(`td`,{colSpan:3,children:(0,A.jsxs)(`div`,{children:[`Upstream`,` `,(0,A.jsx)(m,{tooltip:`Latency measured for requests sent from this Edge instance to the configured upstream, i.e. Unleash or another Edge instance.`,size:`16px`})]})})}),(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`td`,{children:`Client Features`}),(0,A.jsx)(`td`,{children:e.upstreamFeaturesAverageLatencyMs}),(0,A.jsx)(`td`,{children:e.upstreamFeaturesP99LatencyMs})]}),(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`td`,{children:`Metrics`}),(0,A.jsx)(`td`,{children:e.upstreamMetricsAverageLatencyMs}),(0,A.jsx)(`td`,{children:e.upstreamMetricsP99LatencyMs})]}),(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`td`,{children:`Edge`}),(0,A.jsx)(`td`,{children:e.upstreamEdgeAverageLatencyMs}),(0,A.jsx)(`td`,{children:e.upstreamEdgeP99LatencyMs})]}),(0,A.jsx)(N,{children:(0,A.jsx)(`td`,{colSpan:3,children:(0,A.jsxs)(`div`,{children:[`Downstream`,` `,(0,A.jsx)(m,{tooltip:`Latency measured when serving requests from clients, i.e. SDKs or other Edge instances.`,size:`16px`})]})})}),(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`td`,{children:`Client Features`}),(0,A.jsx)(`td`,{children:e.clientFeaturesAverageLatencyMs}),(0,A.jsx)(`td`,{children:e.clientFeaturesP99LatencyMs})]}),(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`td`,{children:`Frontend`}),(0,A.jsx)(`td`,{children:e.frontendApiAverageLatencyMs}),(0,A.jsx)(`td`,{children:e.frontendApiP99LatencyMs})]})]})]}),F=s(`table`)(({theme:e})=>({width:`100%`,borderCollapse:`collapse`,fontSize:e.fontSizes.smallerBody,"& > thead":{borderBottom:`1px solid ${e.palette.text.primary}`},"& tr":{textAlign:`right`,"& > th:first-of-type, td:first-of-type":{textAlign:`left`},paddingTop:e.spacing(1)}})),I=s(`td`)(({theme:e})=>({paddingTop:e.spacing(1),maxWidth:`80px`,"& > div":{display:`flex`,alignItems:`center`,justifyContent:`end`}})),L=s(y)(({theme:e})=>({padding:e.spacing(0,1)})),R=e=>e.length===1?e[0]:`[]`,z=e=>`${R(e.projects)}:${e.environment}.***`,B=e=>e.length<=1||e.includes(`*`)?``:`
2
- Projects: ${e.join(`, `)}
3
- `,V=e=>`[${e.projects.join(`,`)}]:${e.environment}`,H=(e,t)=>{let n=new Set(e||[]),r=new Set(t);if(n.size!==r.size)return!1;for(let e of n)if(!r.has(e))return!1;return!0},U=(e,t)=>(e||[]).every(e=>t.has(e)),W=e=>e.find(e=>!e.projects||e.projects.length===0)?.revisionId??0,G=(e,t)=>{if(e.length===0)return;if(t.projects.includes(`*`))return Math.max(...e.map(e=>e.revisionId));let n=e.find(e=>H(e.projects,t.projects));if(n)return n.revisionId;let r=new Set(t.projects),i=e.filter(e=>U(e.projects,r));if(i.length!==0)return Math.max(...i.map(e=>e.revisionId))},K=(e,t)=>{let n=e.filter(e=>e.environment===t.environment),r=W(n),i=G(n.filter(e=>!!(e.projects&&e.projects.length>0)),t);return Math.max(i??0,r)},ce=e=>e<=0?`success`:e<5?`warning`:`error`,le=({edgeRevisionId:e,upstreamRevisionId:t})=>{let n=t-e;return(0,A.jsx)(d,{title:n<=0?`Edge feature configuration is up to date`:`Edge is ${n} revisions behind expected upstream revision for this token`,children:(0,A.jsx)(L,{color:ce(n),children:e})})},ue=({apiKeys:e,revisionIds:t})=>{let{locationSettings:n}=b();return!e||e.length===0?null:(0,A.jsxs)(F,{children:[(0,A.jsx)(`thead`,{children:(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(`th`,{children:`Token`}),(0,A.jsx)(`th`,{children:`Revision`})]})}),(0,A.jsx)(`tbody`,{children:e?.map(e=>{let r=z(e);return(0,A.jsxs)(`tr`,{children:[(0,A.jsx)(I,{children:(0,A.jsx)(ne,{title:r,children:r})}),(0,A.jsx)(I,{children:(0,A.jsxs)(`div`,{children:[(0,A.jsx)(le,{edgeRevisionId:e.revisionId,upstreamRevisionId:K(t,e)}),(0,A.jsx)(m,{tooltip:`
4
- Edge last updated this token: ${g(e.lastUpdated,n.locale)}
5
- ${B(e.projects)}
6
- `,size:`14px`})]})})]},V(e))})})]})},de=s(`div`)(({theme:e})=>({width:`100%`,borderRadius:e.shape.borderRadiusMedium,border:`1px solid`,borderColor:e.palette.secondary.border,backgroundColor:e.palette.secondary.light,display:`flex`,flexDirection:`column`,alignItems:`center`,padding:0,zIndex:1,marginTop:e.spacing(1)})),fe=s(l)({width:`100%`,background:`transparent`,boxShadow:`none`}),pe=s(r,{shouldForwardProp:e=>e!==`connectionStatus`})(({theme:e,connectionStatus:t})=>({fontSize:e.fontSizes.smallBody,padding:e.spacing(1),minHeight:e.spacing(3),"& .MuiAccordionSummary-content":{alignItems:`center`,gap:e.spacing(1),margin:0,"&.Mui-expanded":{margin:0},"& svg":{fontSize:e.fontSizes.mainHeader,color:t===`Stale`?e.palette.warning.main:t===`Disconnected`?e.palette.error.main:e.palette.success.main}}})),me=s(c)(({theme:e})=>({display:`flex`,flexDirection:`column`,fontSize:e.fontSizes.smallerBody,gap:e.spacing(2)})),q=s(`div`)(({theme:e})=>({display:`flex`,justifyContent:`space-between`,gap:e.spacing(2),"& > span":{display:`flex`,alignItems:`center`}})),he=s(y)(({theme:e})=>({padding:e.spacing(0,1)})),ge=({hosting:e})=>{switch(e){case`hosted`:return`Cloud`;case`enterprise-self-hosted`:return`Self-hosted`;default:return e?`Unknown: ${e}`:`Unknown`}},_e=({reportedAt:e})=>{let t=new Date(e).getTime(),n=(Date.now()-t)/1e3;return n>360?`Disconnected`:n>180?`Stale`:`Connected`},ve=({started:e,reportedAt:t,cpuUsage:n})=>{let r=Number(n);if(!r)return`No usage`;let i=new Date(e).getTime(),a=(new Date(t).getTime()-i)/1e3;return a===0?`No usage`:`${(r/a*100).toFixed(2)} %`},ye=({memoryUsage:e})=>{if(!e)return`No usage`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(2)} ${t[r]}`},be=({instance:e,revisionIds:t})=>{let{locationSettings:n}=b(),r=ae(`enterpriseEdgeTokensList`),i=_e(e),a=g(e.started,n?.locale),o=g(e.reportedAt,n?.locale),s=ve(e),c=ye(e),l=s===`No usage`&&c===`No usage`&&(0,A.jsx)(`p`,{children:`Resource metrics are only available when running on Linux.`});return(0,A.jsx)(de,{children:(0,A.jsxs)(fe,{children:[(0,A.jsxs)(pe,{expandIcon:(0,A.jsx)(p,{}),connectionStatus:i,children:[(0,A.jsx)(d,{arrow:!0,title:`${i}. Last reported: ${o}`,children:(0,A.jsx)(j,{})}),e.id||e.instanceId]}),(0,A.jsxs)(me,{children:[(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`ID`}),(0,A.jsx)(`span`,{children:e.instanceId})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Upstream server`}),(0,A.jsx)(`span`,{children:e.connectedVia||`Unleash`})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Region`}),(0,A.jsx)(`span`,{children:e.region||`Unknown`})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Hosting`}),(0,A.jsx)(`span`,{children:ge(e)})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Version`}),(0,A.jsx)(`span`,{children:e.edgeVersion})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Status`}),(0,A.jsx)(he,{color:i===`Disconnected`?`error`:i===`Stale`?`warning`:`success`,children:i})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Start`}),(0,A.jsx)(`span`,{children:a})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Last report`}),(0,A.jsx)(`span`,{children:o})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`CPU`}),(0,A.jsxs)(`span`,{children:[s,` `,(0,A.jsx)(m,{tooltip:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`p`,{children:`CPU average usage since instance started.`}),l]}),size:`16px`})]})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Memory`}),(0,A.jsxs)(`span`,{children:[c,` `,(0,A.jsx)(m,{tooltip:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`p`,{children:`Current memory usage.`}),l]}),size:`16px`})]})]}),(0,A.jsxs)(q,{children:[(0,A.jsx)(`strong`,{children:`Stream clients`}),(0,A.jsx)(`span`,{children:e.connectedStreamingClients})]}),(0,A.jsx)(q,{children:(0,A.jsx)(P,{instance:e})}),r&&(0,A.jsx)(q,{children:(0,A.jsx)(ue,{apiKeys:e.apiKeyRevisionIds,revisionIds:t})})]})]})})},J=`Unleash`,xe=s(`div`)(({theme:e})=>({marginBottom:e.spacing(18),display:`flex`,justifyContent:`center`})),Se=s(`div`)(({theme:e})=>({display:`flex`,justifyContent:`center`,gap:e.spacing(4),flexWrap:`wrap`,marginTop:e.spacing(2)})),Y=s(`div`)(({theme:e})=>({borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.secondary.border}`,backgroundColor:e.palette.secondary.light,display:`flex`,flexDirection:`column`,alignItems:`center`,padding:e.spacing(1.5),zIndex:1,marginTop:e.spacing(1),"& > svg":{width:e.spacing(9),height:e.spacing(9)}})),Ce=s(Y)(({theme:e})=>({backgroundColor:v(e.palette.background.paper,.75),position:`relative`})),we=s(y)({position:`absolute`,top:-13}),Te=s(f)(({theme:e})=>({marginTop:e.spacing(.5),fontWeight:e.fontWeight.bold})),Ee=s(f)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary})),De=e=>e.reduce((e,t)=>(e.has(t.appName)||e.set(t.appName,{appName:t.appName,instances:[],groupTargets:new Set,level:0}),e.get(t.appName).instances.push(t),e),new Map),Oe=e=>{let t=new Map,n=r=>{if(t.has(r.appName))return t.get(r.appName);let i=0;return r.groupTargets.forEach(t=>{if(t!==J){let r=e.get(t);r&&(i=Math.max(i,n(r)+1))}}),t.set(r.appName,i),i};e.forEach(e=>{e.level=n(e)});let r=new Map;return e.forEach(e=>{let t=r.get(e.level)||[];t.push(e),r.set(e.level,t)}),r},ke=e=>{let t=De(e),n=new Map,r=new Map;return t.forEach(e=>{e.instances=e.instances.sort((e,t)=>e.instanceId.localeCompare(t.instanceId)).map((t,i)=>{let a=`${e.appName}-${i+1}`;return n.set(t.instanceId,a),r.set(a,e.appName),{...t,id:a}})}),t.forEach(e=>{e.instances=e.instances.map(e=>({...e,connectedVia:e.connectedVia?n.get(e.connectedVia)||e.connectedVia:J}));let t=new Set;e.instances.forEach(n=>{if(!n.connectedVia||n.connectedVia===J)t.add(J);else{let i=r.get(n.connectedVia);i&&i!==e.appName&&t.add(i)}}),e.groupTargets=t}),Oe(t)},Ae=e=>e.every(e=>e.hosting===`hosted`)?{hostingLabel:`Cloud`,hostingColor:`secondary`}:e.every(e=>e.hosting===`enterprise-self-hosted`)?{hostingLabel:`Self-hosted`,hostingColor:`info`}:e.every(e=>e.hosting===`hosted`||e.hosting===`enterprise-self-hosted`)?{hostingLabel:`Hybrid`,hostingColor:`warning`}:{hostingLabel:`Unknown`,hostingColor:`neutral`},je=({connectedEdges:e,revisionIds:t})=>{let n=i(),r=(0,T.useMemo)(()=>ke(e),[e]),a=Array.from(r.keys()).sort((e,t)=>e-t);return(0,A.jsxs)(k.ArcherContainer,{strokeColor:n.palette.text.primary,endShape:{arrow:{arrowLength:4,arrowThickness:4}},children:[(0,A.jsx)(xe,{children:(0,A.jsx)(k.ArcherElement,{id:J,children:(0,A.jsxs)(Y,{children:[(0,A.jsx)(o,{darkmode:(0,A.jsx)(oe,{}),lightmode:(0,A.jsx)(re,{})}),(0,A.jsx)(f,{sx:{mt:1},children:J})]})})}),a.map(e=>(0,A.jsx)(Se,{children:r.get(e)?.map(({appName:e,groupTargets:r,instances:i})=>{let{hostingLabel:a,hostingColor:o}=Ae(i);return(0,A.jsx)(k.ArcherElement,{id:e,relations:Array.from(r).map(e=>({targetId:e,targetAnchor:`bottom`,sourceAnchor:`top`,style:{strokeColor:n.palette.secondary.border}})),children:(0,A.jsxs)(Ce,{children:[(0,A.jsx)(we,{color:o,children:a}),(0,A.jsx)(Te,{children:w(e)}),(0,A.jsxs)(Ee,{children:[i.length,` instance`,i.length!==1&&`s`]}),i.map(e=>(0,A.jsx)(be,{instance:e,revisionIds:t},e.instanceId))]})},e)})},e))]})},Me=e=>(0,A.jsxs)(`svg`,{width:312,height:144,viewBox:`0 0 312 144`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,A.jsx)(`rect`,{width:312,height:144,rx:8,fill:`#F1F0FC`}),(0,A.jsxs)(`g`,{opacity:.2,children:[(0,A.jsx)(`circle`,{cx:155.933,cy:72.1494,r:59.9326,stroke:`#657A80`,strokeWidth:1.35669,strokeLinecap:`square`}),(0,A.jsx)(`ellipse`,{cx:155.933,cy:72.2595,rx:43.5873,ry:60.2595,stroke:`#657A80`,strokeWidth:1.35669,strokeLinecap:`square`}),(0,A.jsx)(`ellipse`,{cx:156.368,cy:72.1494,rx:27.2421,ry:59.9326,stroke:`#657A80`,strokeWidth:1.35669,strokeLinecap:`square`}),(0,A.jsx)(`ellipse`,{cx:156.369,cy:72.1494,rx:10.8968,ry:59.9326,stroke:`#657A80`,strokeWidth:1.35669,strokeLinecap:`square`})]}),(0,A.jsxs)(`g`,{opacity:.2,children:[(0,A.jsx)(`mask`,{id:`mask0_35832_1410`,style:{maskType:`alpha`},maskUnits:`userSpaceOnUse`,x:96,y:12,width:120,height:121,children:(0,A.jsx)(`circle`,{cx:155.933,cy:72.1494,r:59.2542,fill:`#92A1A5`,stroke:`#657A80`,strokeWidth:1.35669})}),(0,A.jsxs)(`g`,{mask:`url(#mask0_35832_1410)`,children:[(0,A.jsx)(`path`,{d:`M96 48.1777C96 48.1777 109.076 59.2925 155.933 59.2925C202.789 59.2925 215.865 48.1777 215.865 48.1777`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M96 28.3438C96 28.3438 109.076 45.7787 155.933 45.7787C202.789 45.7787 215.865 28.3438 215.865 28.3438`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M96 2.19141C96 2.19141 109.076 33.1384 155.933 33.1384C202.789 33.1384 215.865 2.19141 215.865 2.19141`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M96 -39.4336C96 -39.4336 109.076 21.3707 155.933 21.3707C202.789 21.3707 215.865 -39.4336 215.865 -39.4336`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`line`,{x1:96,y1:71.472,x2:215.865,y2:71.472,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M215.867 95.6855C215.867 95.6855 202.79 84.5708 155.934 84.5708C109.078 84.5708 96.0016 95.6855 96.0016 95.6855`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M215.867 115.518C215.867 115.518 202.79 98.0826 155.934 98.0826C109.078 98.0826 96.0016 115.518 96.0016 115.518`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M215.867 141.672C215.867 141.672 202.79 110.725 155.934 110.725C109.078 110.725 96.0016 141.672 96.0016 141.672`,stroke:`#657A80`,strokeWidth:1.35669}),(0,A.jsx)(`path`,{d:`M215.866 183.297C215.866 183.297 202.79 122.493 155.934 122.493C109.078 122.493 96.0013 183.297 96.0013 183.297`,stroke:`#657A80`,strokeWidth:1.35669})]})]}),(0,A.jsx)(`rect`,{x:116.749,y:86.5273,width:58.1081,height:29.0541,rx:14.527,transform:`rotate(-180 116.749 86.5273)`,fill:`url(#paint0_linear_35832_1410)`}),(0,A.jsx)(`ellipse`,{cx:102.184,cy:71.9997,rx:14.565,ry:14.527,fill:`#817AFE`}),(0,A.jsx)(`path`,{d:`M106.258 67.9648H98.187V76.0354H106.258V67.9648Z`,fill:`white`}),(0,A.jsx)(`path`,{d:`M140.556 78.3887L140.232 70.291L133.381 74.6202L140.556 78.3887ZM121.749 69.1189L129.108 72.5139L128.369 64.4436L121.749 69.1189ZM137.182 73.0493L137.645 72.5217C136.53 71.5447 135.079 70.5495 133.191 69.6186L132.88 70.2481L132.57 70.8776C134.358 71.7589 135.705 72.6876 136.719 73.577L137.182 73.0493ZM132.88 70.2481L133.191 69.6186C131.302 68.6877 129.629 68.143 128.176 67.8544L128.039 68.5428L127.902 69.2312C129.225 69.4939 130.782 69.9964 132.57 70.8776L132.88 70.2481Z`,fill:`#6C65E5`}),(0,A.jsx)(`rect`,{x:147.284,y:55.7305,width:17.4324,height:32.5405,rx:3.48649,fill:`#1A4049`}),(0,A.jsx)(`path`,{d:`M171.444 78.3887L171.768 70.291L178.619 74.6202L171.444 78.3887ZM190.251 69.1189L182.892 72.5139L183.631 64.4436L190.251 69.1189ZM174.818 73.0493L174.355 72.5217C175.47 71.5447 176.921 70.5495 178.809 69.6186L179.12 70.2481L179.43 70.8776C177.642 71.7589 176.295 72.6876 175.281 73.577L174.818 73.0493ZM179.12 70.2481L178.809 69.6186C180.698 68.6877 182.371 68.143 183.824 67.8544L183.961 68.5428L184.098 69.2312C182.775 69.4939 181.218 69.9964 179.43 70.8776L179.12 70.2481Z`,fill:`#6C65E5`}),(0,A.jsx)(`rect`,{x:253.359,y:86.5273,width:58.1081,height:29.0541,rx:14.527,transform:`rotate(-180 253.359 86.5273)`,fill:`url(#paint1_linear_35832_1410)`}),(0,A.jsx)(`ellipse`,{cx:238.794,cy:71.9997,rx:14.565,ry:14.527,fill:`#1A4049`}),(0,A.jsx)(`path`,{d:`M242.867 67.9648H234.797V76.0354H242.867V67.9648Z`,fill:`#EDF0F1`}),(0,A.jsxs)(`defs`,{children:[(0,A.jsxs)(`linearGradient`,{id:`paint0_linear_35832_1410`,x1:116.737,y1:100.985,x2:174.889,y2:100.985,gradientUnits:`userSpaceOnUse`,children:[(0,A.jsx)(`stop`,{stopColor:`#1A4049`,stopOpacity:0}),(0,A.jsx)(`stop`,{offset:1,stopColor:`#0E1A1D`})]}),(0,A.jsxs)(`linearGradient`,{id:`paint1_linear_35832_1410`,x1:253.347,y1:100.985,x2:311.499,y2:100.985,gradientUnits:`userSpaceOnUse`,children:[(0,A.jsx)(`stop`,{stopColor:`#657A80`,stopOpacity:0}),(0,A.jsx)(`stop`,{offset:1,stopColor:`#1A4049`,stopOpacity:.75})]})]})]}),Ne=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(1),maxWidth:e.spacing(80),margin:`auto`})),Pe=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`row`,gap:e.spacing(2.5),marginTop:e.spacing(2.5)})),Fe=s(`div`)(({theme:e})=>({border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadiusLarge,padding:e.spacing(3),flex:1,display:`flex`,flexDirection:`column`,gap:e.spacing(1.5)})),Ie=s(`div`)({"& > svg":{width:`auto`,maxWidth:`100%`,height:`auto`,display:`block`}}),Le=s(`ul`)(({theme:e})=>({listStyle:`none`,marginTop:e.spacing(1),marginBottom:e.spacing(1),paddingLeft:e.spacing(0),display:`flex`,flexDirection:`column`,gap:e.spacing(1)})),X=s(`li`)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(1)})),Re=s(a)(({theme:e})=>({color:e.palette.primary.main,fontSize:`18px`})),ze=s(`div`)(({theme:e})=>({display:`flex`,justifyContent:`flex-start`,margin:e.spacing(-.75)})),Be=()=>(0,A.jsxs)(Ne,{children:[(0,A.jsx)(f,{variant:`h3`,children:`Which version is right for you?`}),(0,A.jsxs)(f,{variant:`body2`,sx:{color:`text.secondary`},children:[`Unleash Enterprise Edge is a high-performance proxy engineered for scalability, resilience, and privacy. It acts as a shield between your SDKs and the Unleash API, allowing you to handle thousands of concurrent connections with zero impact on your primary instance. Contact`,` `,(0,A.jsx)(`a`,{href:`mailto:license@getunleash.io`,children:`license@getunleash.io`}),` `,`today to provision your private Enterprise Edge environment.`]}),(0,A.jsxs)(Pe,{children:[(0,A.jsx)(Z,{image:(0,A.jsx)(C,{}),title:`Cloud hosted`,description:`When you need to connect to Unleash from geographically distributed locations.`,bullets:[`Global infrastructure`,`No operational burden`,`Instant flag updates worldwide`],docsUrl:`https://docs.getunleash.io/deploy/hosting-options#cloud-hosted`}),(0,A.jsx)(Z,{image:(0,A.jsx)(Me,{}),title:`Self hosted`,description:`Ensure low latency and data sovereignty by running Enterprise Edge inside your private network.`,bullets:[`Ideal for PII heavy data`,`Optimized for minimal latency`,`Improved security`],docsUrl:`https://docs.getunleash.io/deploy/hosting-options#self-hosted`})]})]}),Z=({image:e,title:t,description:n,bullets:r,docsUrl:i})=>(0,A.jsxs)(Fe,{children:[(0,A.jsx)(Ie,{children:e}),(0,A.jsx)(f,{variant:`h3`,children:t}),(0,A.jsx)(f,{variant:`body2`,sx:{color:`text.secondary`},children:n}),(0,A.jsx)(Le,{children:r.map(e=>(0,A.jsxs)(X,{children:[(0,A.jsx)(Re,{}),` `,(0,A.jsx)(f,{variant:`body2`,sx:{color:`text.secondary`},children:e})]},e))}),(0,A.jsxs)(f,{variant:`body2`,sx:{color:`text.secondary`},children:[`Contact`,` `,(0,A.jsx)(`a`,{href:`mailto:license@getunleash.io`,children:`license@getunleash.io`}),` to get started.`]}),(0,A.jsx)(ze,{children:(0,A.jsx)(ie,{component:S,nativeButton:!1,to:i,size:`small`,sx:{fontSize:`14px`},rel:`noopener noreferrer`,target:`_blank`,children:`Read docs`})})]}),Ve=s(x)(({theme:e})=>({".body":{padding:e.spacing(0)}})),Q=s(`div`)(({theme:e})=>({padding:e.spacing(4)})),He=s(`hr`)(({theme:e})=>({border:`none`,height:`1px`,background:e.palette.divider,width:`100%`,margin:e.spacing(2,0)})),$=()=>{se(`Enterprise Edge`);let{edgeObservability:e}=D({refreshInterval:3e4}),t=e.connectedEdges.length>0;return(0,A.jsxs)(Ve,{header:`Enterprise Edge`,children:[t&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(Q,{children:(0,A.jsx)(je,{connectedEdges:e.connectedEdges,revisionIds:e.revisionIds})}),(0,A.jsx)(He,{})]}),(0,A.jsx)(Q,{sx:{pb:t?6:4},children:(0,A.jsx)(Be,{})})]})};export{$ as EnterpriseEdge,$ as default};
@@ -1,2 +0,0 @@
1
- import{o as e,t}from"./react-DW1tWzGJ.js";import{O as n,_ as r,a as i,d as a,g as o,i as s,o as c,p as l,v as u}from"./chart-CG3XAKw_.js";import{Hc as d,Jd as f,Lt as p,Uc as m,Vc as h,df as g,gc as _}from"./index-DIBimazR.js";import{t as v}from"./daysOrHours-DZ037Bzn.js";var y=e(t(),1),b=(e,t,n)=>({datasets:[{label:`Enabled`,borderColor:e.palette.charts.flagMetrics.enabled,backgroundColor:e.palette.charts.flagMetrics.enabled,data:x(t,n,e=>e.yes)},{label:`Not enabled`,borderColor:e.palette.charts.flagMetrics.notEnabled,backgroundColor:e.palette.charts.flagMetrics.notEnabled,data:x(t,n,e=>e.no)}]}),x=(e,t,n)=>e.map(e=>({x:e.timestamp,y:n(e),variants:e.variants||{}})),S=(e,t)=>{if(t===0)return``;let[n,r]=e;return`${r} (${Math.floor(Number(r)/t*100)}%) - ${n}`},C=(e,t,n,r)=>({locale:r.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,position:`nearest`,itemSort:(e,t)=>{let n=[`Enabled`,`Not enabled`];return n.indexOf(e.dataset.label)-n.indexOf(t.dataset.label)},callbacks:{beforeBody:e=>`${e.reduce((e,t)=>e+(t.parsed.y??0),0).toLocaleString(r.locale)} - Total evaluations`,label:e=>`${e.formattedValue} - ${e.dataset.label}`,afterLabel:e=>{let t=e.dataset.data[e.dataIndex];if(e.dataset.label!==`Enabled`||t.variants===void 0)return``;let{disabled:n,...r}=t.variants;return Object.entries(r).map(e=>S(e,t.y)).join(`
2
- `)},title:e=>`Time: ${n>48?m(e[0].parsed.x??0,r.locale,`UTC`):h(e[0].parsed.x??0,r.locale)}`}},legend:{position:`top`,align:`end`,labels:{boxWidth:10,boxHeight:10,usePointStyle:!0}},title:{text:w(n),position:`top`,align:`start`,display:!0,font:{size:16,weight:400},color:e.palette.text.primary}},scales:{y:{type:`linear`,stacked:!0,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},border:{color:e.palette.divider}},x:{type:`time`,stacked:!0,time:{unit:n>48?`day`:`hour`},grid:{display:!1},ticks:{callback:(e,t,i)=>n>48?d(i[t].value,r.locale,`UTC`):h(i[t].value,r.locale),color:e.palette.text.secondary}}}}),w=e=>e===1?`Requests in the last hour`:`Requests in the last ${v(e)}`;n.font={...n.font,family:`Sen`,size:13,weight:400};var T=g(),E=({metrics:e,hoursBack:t,statsSectionId:n})=>{let r=f(),{locationSettings:i}=_(),a=(0,y.useMemo)(()=>[...e].sort((e,t)=>e.timestamp.localeCompare(t.timestamp)),[e]),o=(0,y.useMemo)(()=>C(r,a,t,i),[r,a,t,i]);return(0,T.jsx)(`div`,{style:{height:400},children:(0,T.jsx)(p,{data:(0,y.useMemo)(()=>b(r,a,i),[r,a,i]),options:o,"aria-label":`A stacked bar chart showing feature flag exposure metrics: exposed and not exposed requests.`,"aria-describedby":n})})};c.register(i,a,s,l,o,u,r);export{E as FeatureMetricsChart,E as default};
@@ -1,8 +0,0 @@
1
- import{o as e,t}from"./react-DW1tWzGJ.js";import{n,r}from"./formatPath-vbOoY_VU.js";import{$r as i,$s as a,$u as o,Ad as s,As as c,Cd as l,Cu as u,Df as d,Gs as f,H as p,Hs as m,Jd as h,Ji as g,Kd as _,Lo as v,Md as y,Ms as b,Nd as x,Pi as ee,Qc as S,Qo as C,Qr as w,Qs as te,Td as T,Ul as ne,Uo as E,Vd as D,Wa as O,Xr as k,Yl as re,Za as A,Zc as j,Zl as ie,Zr as ae,br as oe,ci as se,cl as ce,co as M,df as N,ec as P,ei as F,er as I,gd as L,hd as R,jc as z,jl as B,ku as V,la as H,mu as U,ni as W,oi as G,pd as le,rc as K,rl as ue,ru as de,si as fe,so as pe,ta as me,to as he,tr as ge,ui as _e,us as ve,vu as q,yd as J}from"./index-DIBimazR.js";import{a as ye,d as be,f as xe,h as Se,i as Ce,n as we,o as Te,p as Ee,s as De,t as Oe}from"./DialogWithAside-CtKlvRxJ.js";var Y=N(),ke=D((0,Y.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-2 10H7v-2h10z`}),`IndeterminateCheckBox`),Ae=l(),je=({options:e,selectedOptions:t,indeterminateOptions:n,tagType:r,existingTags:i,disabled:a=!1,onChange:o})=>{let s=(0,Y.jsx)(ge,{fontSize:`small`});return(0,Y.jsx)(J,{multiple:!0,id:`checkboxes-tag`,sx:{marginTop:e=>e.spacing(2),width:500},disableCloseOnSelect:!0,options:e,value:t,isOptionEqualToValue:(e,t)=>t.inputValue&&t.inputValue!==``?e.title===t.inputValue:e.title===t.title,getOptionLabel:e=>e.inputValue?e.inputValue:e.title,renderOption:({key:e,...t},r,{selected:i})=>{let a=n?.some(e=>e.title===r.title)??!1;return(0,Y.jsxs)(`li`,{...t,children:[(0,Y.jsx)(q,{condition:!!r.inputValue,show:(0,Y.jsx)(he,{sx:{mr:e=>e.spacing(.5)}}),elseShow:(0,Y.jsx)(le,{icon:s,checkedIcon:(0,Y.jsx)(I,{fontSize:`small`}),indeterminateIcon:(0,Y.jsx)(ke,{fontSize:`small`}),sx:{mr:e=>e.spacing(.5)},checked:i&&!a,indeterminate:a})}),r.title]},e)},filterOptions:(e,t)=>{let n=t.inputValue.trim(),r=Ae(e,{...t,inputValue:n}),i=e.some(e=>n===e.title);return n.length>=2&&!i&&r.push({inputValue:n,title:`Create new value "${n}"`}),r},onChange:o,renderInput:e=>(0,Y.jsx)(V,{...e,label:`Select values`,placeholder:`Select values`}),disabled:a,slotProps:{listbox:{style:{maxHeight:200,overflow:`auto`}}}})},Me=_(`li`)({flexDirection:`column`}),Ne=({options:e,value:t,disabled:n=!1,onChange:r})=>{let i=h();return(0,Y.jsx)(J,{disablePortal:!0,disabled:n,id:`tag-type-select`,sx:{marginTop:e=>e.spacing(2),width:500},options:e,disableClearable:!0,value:t,getOptionLabel:e=>e.name,renderOption:({key:e,...t},n)=>(0,Y.jsxs)(Me,{...t,style:{alignItems:`flex-start`,gap:i.spacing(.5)},children:[(0,Y.jsx)(T,{variant:`body1`,children:n.name}),(0,Y.jsx)(T,{variant:`caption`,children:n.description})]},e),renderInput:e=>(0,Y.jsx)(V,{...e,label:`Tag type`,value:t}),onChange:r,slotProps:{listbox:{style:{maxHeight:200,overflow:`auto`}}}})},Pe=()=>{let{makeRequest:e,createRequest:t,errors:n,loading:r}=te({propagateErrors:!0});return{createTag:async n=>{let r=t(`api/admin/tags`,{method:`POST`,body:JSON.stringify(n)});return e(r.caller,r.id)},bulkUpdateTags:async(n,r)=>{let i=t(`api/admin/projects/${r}/tags`,{method:`PUT`,body:JSON.stringify(n)});return e(i.caller,i.id)},errors:n,loading:r}},X=e(t(),1),Fe=(e,t={})=>{let r=async()=>{let t=n(`api/admin/tags/${e}`);return(await fetch(t,{method:`GET`}).then(S(`Tags`))).json()},i=`api/admin/tags/${e}`,{data:a,error:o}=m(!!e,{tags:[]},i,r,t),[s,c]=(0,X.useState)(!o&&!a);return(0,X.useEffect)(()=>{c(!o&&!a)},[a,o]),{tags:a?.tags||[],error:o,loading:s,refetch:()=>{ie(i)}}},Z=(e,t)=>{let{project:n,refetch:r}=E(e);return{defaultStrategyFallback:{name:`flexibleRollout`,constraints:[],parameters:{rollout:`100`,stickiness:n.defaultStickiness||`default`,groupId:``}},strategy:n.environments?.find(e=>e.environment===t)?.defaultStrategy,refetch:r}},Ie=()=>{let e=A(`projectId`),t=_e(`environmentId`),{refetch:n}=E(e),{defaultStrategyFallback:r,strategy:i,refetch:o}=Z(e,t),[s,c]=(0,X.useState)(i||r),{updateDefaultStrategy:l,loading:u}=ee(),{strategyDefinition:f}=fe(s.name),{setToastData:p,setToastApiError:m}=P(),h=se(),{uiConfig:g}=j(),{unleashUrl:_}=g,y=d(),{trackEvent:b}=K(),x=w(s.constraints);if(!f)return null;let S=Le(s);return(0,Y.jsx)(H,{modal:!0,disablePadding:!0,description:ze,documentationLink:Be,documentationLinkLabel:Ve,formatApiCode:()=>Re(e,t,S,f,_),children:(0,Y.jsxs)(oe,{strategy:s,setStrategy:c,strategyDefinition:f,errors:h,groupIdTooltip:`Defaults to the feature flag name if not set.`,onSubmit:async()=>{let r=`/projects/${e}/settings/default-strategy`;try{await l(e,t,S),b(`default_strategy`,{props:{action:`edit`,hasTitle:!!S.title}}),n(),p({text:`Default Strategy updated`,type:`success`}),await o(),y(r)}catch(e){m(a(e))}},children:[(0,Y.jsx)(v,{permission:[C,ve],projectId:e,environmentId:t,variant:`contained`,color:`primary`,type:`submit`,disabled:u||!x||h.hasFormErrors(),"data-testid":B,children:`Save strategy`}),(0,Y.jsx)(R,{type:`button`,onClick:()=>y(`/projects/${e}/settings/default-strategy`),children:`Cancel`})]})})},Le=e=>({name:e.name,title:e.title,constraints:e.constraints??[],parameters:Object.fromEntries(Object.entries(e.parameters??{}).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])),variants:e.variants??[],segments:e.segments??[],disabled:e.disabled??!1}),Re=(e,t,n,r,i)=>{if(!i)return``;let a={...n,parameters:G(n.parameters??{},r)};return`curl --location --request POST '${`${i}/api/admin/projects/${e}/environments/${t}/default-strategy`}' \\
2
- --header 'Authorization: INSERT_API_KEY' \\
3
- --header 'Content-Type: application/json' \\
4
- --data-raw '${JSON.stringify(a,void 0,2)}'`},ze=`
5
- An activation strategy will only run when a feature flag is enabled and provides a way to control who will get access to the feature.
6
- If any of a feature flag's activation strategies returns true, the user will get access.
7
- `,Be=`https://docs.getunleash.io/concepts/projects#project-default-strategy`,Ve=`Default strategy documentation`,He=e=>{let{data:t,error:r,mutate:i}=re(n(`api/admin/environments/project/${e}`),Ue);return{environments:(0,X.useMemo)(()=>t||[],[t]),refetchEnvironments:(0,X.useCallback)(async()=>{await i()},[i]),loading:!r&&!t,error:r}},Ue=async e=>(await fetch(e).then(S(`Environments`)).then(e=>e.json())).environments.sort((e,t)=>e.sortOrder-t.sortOrder),We=e=>{let{setToastData:t,setToastApiError:n}=P(),{addChange:r}=W(),{refetch:i}=F(e),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)({isOpen:!1});return{pending:o,onChangeRequestToggle:(0,X.useCallback)((e,t,n,r)=>{l({featureName:e,environment:t,enabled:n,shouldActivateDisabledStrategies:r,isOpen:!0})},[]),onChangeRequestToggleClose:(0,X.useCallback)(()=>{l(e=>({...e,isOpen:!1}))},[]),onChangeRequestToggleConfirm:(0,X.useCallback)(async()=>{try{s(!0),await r(e,c.environment,{feature:c.featureName,action:`updateEnabled`,payload:{enabled:!!c.enabled,shouldActivateDisabledStrategies:!!c.shouldActivateDisabledStrategies}}),i(),l(e=>({...e,isOpen:!1})),t({type:`success`,text:`Changes added to draft`})}catch(e){n(a(e)),l(e=>({...e,isOpen:!1}))}finally{s(!1)}},[r]),changeRequestDialogDetails:c}},Ge=({enabled:e,featureName:t,environment:n})=>(0,Y.jsxs)(T,{"data-testid":`update-enabled-message`,children:[(0,Y.jsx)(`strong`,{children:e?`Enable`:`Disable`}),` feature flag`,` `,(0,Y.jsx)(`strong`,{children:t}),` in `,(0,Y.jsx)(`strong`,{children:n})]}),Ke=_(`ul`)(({theme:e})=>({margin:e.spacing(1),paddingLeft:e.spacing(2)})),qe=({isOpen:e,onAddDefaultStrategy:t,onActivateDisabledStrategies:n,onClose:r,environment:i,featureId:a})=>{let o=A(`projectId`),{feature:s}=pe(o,a),l=s.environments?.find(({name:e})=>e===i)?.strategies?.filter(({disabled:e})=>e).length,u=l?l===1?`1 disabled strategy`:`${l} disabled strategies`:`disabled strategies`;return(0,Y.jsxs)(f,{open:e,secondaryButtonText:`Cancel`,permissionButton:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(v,{type:`button`,variant:`outlined`,permission:c,projectId:o,environmentId:i,onClick:t,children:`Add default strategy`}),(0,Y.jsx)(v,{type:`button`,variant:`outlined`,permission:c,projectId:o,environmentId:i,onClick:n,children:`Enable all strategies`})]}),onClose:r,title:`Enable feature flag in ${i}`,fullWidth:!0,children:[(0,Y.jsx)(T,{sx:{mb:e=>e.spacing(3)},children:`A feature flag cannot be enabled without an enabled strategy.`}),(0,Y.jsx)(T,{children:`To enable this feature flag you can choose to:`}),(0,Y.jsxs)(Ke,{children:[(0,Y.jsx)(`li`,{children:(0,Y.jsx)(T,{children:(0,Y.jsx)(`strong`,{children:`Add the default strategy`})})}),(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(T,{children:[(0,Y.jsx)(`strong`,{children:`Enable all the disabled strategies`}),` `,`(this feature flag has `,u,`)`]})})]})]})},Je=e=>{let t=n=>{n<e.length&&e[n](()=>t(n+1))};t(0)},Ye=e=>{let{toggleFeatureEnvironmentOn:t,toggleFeatureEnvironmentOff:n}=i(),{setToastData:r,setToastApiError:o}=P(),[s,c]=(0,X.useState)({open:!1,label:``,loading:!1,onClose:()=>{},onClick:()=>{}}),[l,u]=(0,X.useState)({isOpen:!1,environment:``,featureId:``,onClose:()=>{},onActivateDisabledStrategies:()=>{},onAddDefaultStrategy:()=>{}}),{pending:d,onChangeRequestToggle:f,onChangeRequestToggleClose:m,onChangeRequestToggleConfirm:h,changeRequestDialogDetails:g}=We(e),[_,v]=(0,X.useState)(),y=(0,X.useCallback)(async(e,i)=>{let s=!1;return Je([t=>{if(i.isChangeRequestEnabled||!ae(i.environmentType||``))return t();c({open:!0,label:`${e?`Enable`:`Disable`} Environment`,loading:!1,onClose:()=>{c(e=>({...e,open:!1})),i.onRollback?.()},onClick:()=>{c(e=>({...e,open:!1,loading:!0})),t()}})},t=>{if(e===!1||!i.hasStrategies||i.hasEnabledStrategies||i.hasReleasePlans)return t();u({isOpen:!0,environment:i.environmentName,featureId:i.featureId,onClose:()=>{u(e=>({...e,isOpen:!1})),i.onRollback?.()},onActivateDisabledStrategies:()=>{u(e=>({...e,isOpen:!1})),s=!0,t()},onAddDefaultStrategy:()=>{u(e=>({...e,isOpen:!1})),t()}})},t=>{if(!i.isChangeRequestEnabled)return t();v(()=>{v(void 0),i.onRollback?.()}),f(i.featureId,i.environmentName,e,s)},async t=>{if(e!==!1)return t();try{await n(i.projectId,i.featureId,i.environmentName),r({type:`success`,text:`Disabled in ${i.environmentName}`}),i.onSuccess?.()}catch(e){o(a(e)),i.onRollback?.()}},async n=>{if(e!==!0)return n();try{await t(i.projectId,i.featureId,i.environmentName,s),r({type:`success`,text:`Enabled in ${i.environmentName}`}),i.onSuccess?.()}catch(e){o(a(e)),i.onRollback?.()}}])},[c]),b=l.featureId.length!==0;return{onToggle:y,modals:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(k,{...s}),(0,Y.jsx)(q,{condition:b,show:(0,Y.jsx)(qe,{...l})}),(0,Y.jsx)(p,{isOpen:g.isOpen,onClose:()=>{_?.(),m()},environment:g?.environment,disabled:d,onConfirm:()=>{_?.(),h()},messageComponent:(0,Y.jsx)(Ge,{enabled:g?.enabled,featureName:g?.featureName,environment:g.environment})})]})}},Xe=e=>{let[t,n]=(0,X.useState)(e),r=(0,X.useCallback)(()=>n(e),[e]);return(0,X.useEffect)(()=>{n(e)},[e]),[t,n,r]},Ze=_(L)(()=>({mx:`auto`,...u})),Qe=({projectId:e,featureId:t,environmentName:n,value:r,onToggle:i})=>{let[a,o,s]=Xe(r),c=()=>{o(!a),requestAnimationFrame(()=>{i(!a,s)})},l=`${t}-${n}`;return(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsx)(Ze,{"data-testid":`TOGGLE-${l}`,children:(0,Y.jsx)(O,{tooltip:a?`Disable flag in ${n}`:`Enable flag in ${n}`,checked:r,environmentId:n,projectId:e,permission:b,slotProps:{input:{"aria-label":n}},onClick:c,"data-testid":`permission-switch`,disabled:r!==a})},l)})},$e=D((0,Y.jsx)(`path`,{d:`M16 11h-1V3c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v8H8c-2.76 0-5 2.24-5 5v7h18v-7c0-2.76-2.24-5-5-5m3 10h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H9v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H5v-5c0-1.65 1.35-3 3-3h8c1.65 0 3 1.35 3 3z`}),`CleaningServices`),et=`flag-reminders:v1`,tt=50,nt=7,rt=({days:e=nt,maxReminders:t=tt}={})=>{let[n,r]=z(et,{});return{shouldShowReminder:e=>{let t=n[e];return!t||de(new Date,new Date(t))},snoozeReminder:(n,i=e)=>{let a=U(new Date,i).getTime();r(e=>{let r={...e,[n]:a},i=Object.entries(r);if(i.length>t){i.sort((e,t)=>e[1]-t[1]);let e=i.slice(i.length-t);return Object.fromEntries(e)}return r})}}},it=_(T)(({theme:e})=>({fontSize:e.typography.body2.fontSize,fontWeight:e.typography.fontWeightBold,marginBottom:e.spacing(1.25)})),at=_(T)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,marginTop:e.spacing(2.75),marginBottom:e.spacing(1.75)})),ot=_(`ul`)(({theme:e})=>({padding:0,margin:0,listStyle:`none`,display:`flex`,flexDirection:`column`,gap:e.spacing(1.5)})),Q=_(o)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(1),color:`inherit`,fontSize:e.typography.body2.fontSize,fontWeight:e.typography.fontWeightBold,paddingLeft:e.spacing(1),textDecoration:`none`,"&:hover, &:focus":{textDecoration:`underline`}})),st=()=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(it,{children:`Why do I need an SDK?`}),(0,Y.jsx)(T,{variant:`body2`,children:`SDKs serve to bind your application to Unleash. The SDK can connect to Unleash via HTTP and retrieve feature flag configuration that is then cached in your application. Making sure none of your application data ever leaves your servers.`}),(0,Y.jsx)(at,{children:`Other resources`}),(0,Y.jsxs)(ot,{children:[(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(Q,{href:`https://docs.getunleash.io/sdks`,target:`_blank`,rel:`noreferrer`,children:[(0,Y.jsx)(ce,{fontSize:`small`}),`SDK overview`]})}),(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(Q,{href:`https://github.com/Unleash/unleash-sdk-examples`,target:`_blank`,rel:`noreferrer`,children:[(0,Y.jsx)(ue,{fontSize:`small`}),`SDK code examples repo`]})})]})]}),ct=_(x)(({theme:e})=>({boxShadow:`none`,border:`1px solid ${e.palette.divider}`,borderRadius:`${e.shape.borderRadiusLarge}px !important`,"&:before":{display:`none`},"&.Mui-disabled":{backgroundColor:e.palette.background.paper}})),lt=_(s)(({theme:e})=>({gap:e.spacing(1.5),fontWeight:e.typography.fontWeightBold,"& .MuiAccordionSummary-content":{alignItems:`center`,gap:e.spacing(1.5)},"&.Mui-disabled":{opacity:1,"& .MuiAccordionSummary-expandIconWrapper":{opacity:.5}}})),ut=_(M)(({theme:e})=>({display:`flex`,alignItems:`center`,justifyContent:`center`,backgroundColor:e.palette.success.main,color:`white`,border:`1px solid ${e.palette.success.main}`,"& svg":{width:e.spacing(2.5),height:e.spacing(2.5)}})),dt=_(L)({marginLeft:`auto`}),ft=_(y)(({theme:e})=>({borderTop:`1px solid ${e.palette.divider}`,padding:e.spacing(2),paddingLeft:e.spacing(6.5)})),$=({stepNumber:e,title:t,isExpanded:n,isCompleted:r,isDisabled:i,onExpand:a,summary:o,children:s})=>(0,Y.jsxs)(ct,{expanded:n,disabled:i,onChange:a,children:[(0,Y.jsxs)(lt,{expandIcon:(0,Y.jsx)(ne,{}),children:[r?(0,Y.jsx)(ut,{round:!0,children:(0,Y.jsx)(g,{})}):(0,Y.jsx)(M,{color:n?`primary`:`neutral`,round:!0,children:e}),t,o&&(0,Y.jsx)(dt,{children:o})]}),(0,Y.jsx)(ft,{children:s})]}),pt=_(L)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(1)})),mt=({sdk:e})=>{if(!e)return null;let t=xe.find(t=>t.name===e.name)?.icon;return(0,Y.jsxs)(pt,{children:[t&&(0,Y.jsx)(Se,{src:r(t),alt:``}),e.name]})},ht=(e,t)=>`${e}/api${Ee.some(e=>e.name===t)?`/frontend`:``}/`,gt=_(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3)})),_t=({projectId:e,sdk:t,apiKey:n,feature:r,isActive:i,onSdkConnected:a})=>{let{uiConfig:o}=j(),[s,c]=(0,X.useState)(r),[l,u]=(0,X.useState)(!1);(0,X.useEffect)(()=>{r&&c(r)},[r]);let{project:d}=E(e,{refreshInterval:1e3}),f=d.onboardingStatus.status===`sdk-connected`;if((0,X.useEffect)(()=>{f&&a()},[f,a]),(0,X.useEffect)(()=>{if(f||!i)return;let e=setTimeout(()=>u(!0),3e4);return()=>clearTimeout(e)},[f,i]),!t||!n)return null;let p=ht(o.unleashUrl,t.name),[m]=(ye[t.name]||``).replace(`<YOUR_API_TOKEN>`,n).replace(`<YOUR_API_URL>`,p).replaceAll(`<YOUR_FLAG>`,s||`<YOUR_FLAG>`).split(`---
8
- `);return(0,Y.jsxs)(gt,{children:[(0,Y.jsx)(`div`,{children:(0,Y.jsx)(me,{components:{code:Ce},children:m})}),(0,Y.jsx)(we,{sdkConnected:f,connectedTitle:`We received metrics from your application`,connectedBody:`Your SDK is connected and evaluating flags.`,waitingTitle:`Waiting for SDK data...`,waitingBody:`Run your app and evaluate your flag. This step completes on its own.`,showTroubleshooting:l,troubleshootingText:`Not seeing evaluations after ~30s? Make sure your app has started and that the client was initialized with the API key from step 2.`})]})},vt=_(L)({display:`flex`,justifyContent:`flex-end`}),yt=_(`div`)(({theme:e})=>({flex:1,padding:e.spacing(3),display:`flex`,flexDirection:`column`,gap:e.spacing(2)})),bt=_(`div`)(({theme:e})=>({padding:e.spacing(3),display:`flex`,flexDirection:`column`})),xt=({open:e,onClose:t,projectId:n,environments:r,feature:i})=>{let{trackEvent:a}=K(),[o,s]=(0,X.useState)(0),[c,l]=(0,X.useState)(0),[u,d]=(0,X.useState)(),[f,p]=(0,X.useState)(),m=[{title:`Select SDK`,content:(0,Y.jsx)(be,{sdk:u,onSelect:e=>{d(e),s(1),l(1)}}),summary:(0,Y.jsx)(mt,{sdk:u})},{title:`Generate API key`,content:(0,Y.jsx)(De,{projectId:n,sdk:u,environments:r,onApiKeyChange:e=>{!e&&u&&s(1),p(e)},onNext:()=>{s(2),l(2)}}),summary:(0,Y.jsx)(Te,{apiKey:f})},{title:`Configure the SDK`,content:(0,Y.jsx)(_t,{projectId:n,sdk:u,apiKey:f,feature:i,isActive:o>=2,onSdkConnected:()=>s(3)})}],h=o>=m.length&&u,g=e=>{let t=e+1;c===e&&t<m.length&&t<=o?l(t):c!==e&&l(e)};return e?(0,Y.jsx)(Oe,{open:!0,onClose:t,title:`Connect SDK`,fullHeight:!0,aside:(0,Y.jsx)(bt,{children:(0,Y.jsx)(st,{})}),children:(0,Y.jsxs)(yt,{children:[m.map(({title:e,content:t,summary:n},r)=>{let i=r<o,a=r>o;return(0,Y.jsx)($,{stepNumber:r+1,title:e,isExpanded:c===r,isCompleted:i,isDisabled:a,onExpand:()=>g(r),summary:i&&n,children:t},e)}),(0,Y.jsx)(vt,{children:(0,Y.jsx)(R,{variant:`contained`,disabled:!h,onClick:()=>{h&&(a(`onboarding`,{props:{eventType:`onboarding-finished`,onboardedSdk:u.name}}),t())},children:`Finish setup`})})]})}):null},St=({isStale:e,isOpen:t,projectId:n,featureId:r,onClose:o})=>{let{setToastData:s,setToastApiError:c}=P(),{patchFeatureToggle:l}=i(),u=(0,Y.jsx)(T,{children:`Setting a flag to stale marks it for cleanup`}),d=(0,Y.jsx)(T,{children:`Setting a flag to active marks it as in active use`}),p=e?`active`:`stale`;return(0,Y.jsx)(f,{open:t,secondaryButtonText:`Cancel`,primaryButtonText:`Flip to ${p}`,title:`Set feature state to ${p}`,onClick:async t=>{t.stopPropagation();try{await l(n,r,[{op:`replace`,path:`/stale`,value:!e}]),o()}catch(e){c(a(e))}s(e?{type:`success`,text:`The flag is no longer marked as stale`}:{type:`success`,text:`The flag has been marked as stale`})},onClose:o,children:(0,Y.jsx)(q,{condition:e,show:d,elseShow:u})})};export{Qe as a,Ie as c,Pe as d,Ne as f,$e as i,Z as l,xt as n,Ye as o,je as p,rt as r,He as s,St as t,Fe as u};