unleash-server 5.8.2 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1000) hide show
  1. package/dist/lib/addons/addon.d.ts.map +1 -1
  2. package/dist/lib/addons/addon.js +1 -0
  3. package/dist/lib/addons/addon.js.map +1 -1
  4. package/dist/lib/addons/datadog.d.ts.map +1 -1
  5. package/dist/lib/addons/datadog.js.map +1 -1
  6. package/dist/lib/addons/feature-event-formatter-md.d.ts.map +1 -1
  7. package/dist/lib/addons/feature-event-formatter-md.js +5 -1
  8. package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
  9. package/dist/lib/addons/feature-event-formatter-md.test.js +18 -0
  10. package/dist/lib/addons/feature-event-formatter-md.test.js.map +1 -1
  11. package/dist/lib/addons/slack-app-definition.d.ts.map +1 -1
  12. package/dist/lib/addons/slack-app-definition.js +1 -0
  13. package/dist/lib/addons/slack-app-definition.js.map +1 -1
  14. package/dist/lib/addons/slack-app.test.js +9 -2
  15. package/dist/lib/addons/slack-app.test.js.map +1 -1
  16. package/dist/lib/addons/webhook-definition.d.ts.map +1 -1
  17. package/dist/lib/addons/webhook-definition.js +1 -0
  18. package/dist/lib/addons/webhook-definition.js.map +1 -1
  19. package/dist/lib/addons/webhook.js.map +1 -1
  20. package/dist/lib/app.d.ts +1 -1
  21. package/dist/lib/app.d.ts.map +1 -1
  22. package/dist/lib/app.js.map +1 -1
  23. package/dist/lib/create-config.d.ts.map +1 -1
  24. package/dist/lib/create-config.js +3 -1
  25. package/dist/lib/create-config.js.map +1 -1
  26. package/dist/lib/db/access-store.d.ts +1 -1
  27. package/dist/lib/db/access-store.d.ts.map +1 -1
  28. package/dist/lib/db/access-store.js +3 -4
  29. package/dist/lib/db/access-store.js.map +1 -1
  30. package/dist/lib/db/access-store.test.js +1 -1
  31. package/dist/lib/db/access-store.test.js.map +1 -1
  32. package/dist/lib/db/client-applications-store.d.ts.map +1 -1
  33. package/dist/lib/db/client-applications-store.js.map +1 -1
  34. package/dist/lib/db/client-instance-store.d.ts +1 -0
  35. package/dist/lib/db/client-instance-store.d.ts.map +1 -1
  36. package/dist/lib/db/client-instance-store.js +9 -0
  37. package/dist/lib/db/client-instance-store.js.map +1 -1
  38. package/dist/lib/db/event-store.d.ts +2 -95
  39. package/dist/lib/db/event-store.d.ts.map +1 -1
  40. package/dist/lib/db/event-store.js +21 -293
  41. package/dist/lib/db/event-store.js.map +1 -1
  42. package/dist/lib/db/feature-environment-store.d.ts.map +1 -1
  43. package/dist/lib/db/feature-environment-store.js +7 -3
  44. package/dist/lib/db/feature-environment-store.js.map +1 -1
  45. package/dist/lib/db/feature-strategy-store.test.js +2 -6
  46. package/dist/lib/db/feature-strategy-store.test.js.map +1 -1
  47. package/dist/lib/db/index.js +5 -5
  48. package/dist/lib/db/index.js.map +1 -1
  49. package/dist/lib/db/project-stats-store.d.ts +3 -3
  50. package/dist/lib/db/project-stats-store.d.ts.map +1 -1
  51. package/dist/lib/db/project-store.d.ts.map +1 -1
  52. package/dist/lib/db/project-store.js +10 -1
  53. package/dist/lib/db/project-store.js.map +1 -1
  54. package/dist/lib/db/role-store.d.ts +4 -4
  55. package/dist/lib/db/role-store.d.ts.map +1 -1
  56. package/dist/lib/db/segment-store.d.ts.map +1 -1
  57. package/dist/lib/db/segment-store.js +1 -2
  58. package/dist/lib/db/segment-store.js.map +1 -1
  59. package/dist/lib/db/segment-store.test.js +5 -3
  60. package/dist/lib/db/segment-store.test.js.map +1 -1
  61. package/dist/lib/db/transaction.d.ts +1 -1
  62. package/dist/lib/db/transaction.d.ts.map +1 -1
  63. package/dist/lib/domain/project-health/project-health.d.ts +2 -2
  64. package/dist/lib/domain/project-health/project-health.d.ts.map +1 -1
  65. package/dist/lib/error/archivedfeature-error.d.ts +7 -0
  66. package/dist/lib/error/archivedfeature-error.d.ts.map +1 -0
  67. package/dist/lib/error/archivedfeature-error.js +12 -0
  68. package/dist/lib/error/archivedfeature-error.js.map +1 -0
  69. package/dist/lib/error/permission-error.js +1 -2
  70. package/dist/lib/error/permission-error.js.map +1 -1
  71. package/dist/lib/features/access/createAccessService.d.ts +1 -1
  72. package/dist/lib/features/access/createAccessService.d.ts.map +1 -1
  73. package/dist/lib/features/access/createAccessService.js +2 -5
  74. package/dist/lib/features/access/createAccessService.js.map +1 -1
  75. package/dist/lib/features/change-request-access-service/createChangeRequestAccessReadModel.d.ts +1 -1
  76. package/dist/lib/features/change-request-access-service/createChangeRequestAccessReadModel.d.ts.map +1 -1
  77. package/dist/lib/features/change-request-segment-usage-service/createChangeRequestSegmentUsageReadModel.d.ts +1 -1
  78. package/dist/lib/features/change-request-segment-usage-service/createChangeRequestSegmentUsageReadModel.d.ts.map +1 -1
  79. package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.d.ts.map +1 -1
  80. package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.js.map +1 -1
  81. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
  82. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
  83. package/dist/lib/features/client-feature-toggles/tests/client-feature-toggle.e2e.test.js.map +1 -1
  84. package/dist/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.js.map +1 -1
  85. package/dist/lib/features/dependent-features/createDependentFeaturesService.d.ts.map +1 -1
  86. package/dist/lib/features/dependent-features/createDependentFeaturesService.js +3 -21
  87. package/dist/lib/features/dependent-features/createDependentFeaturesService.js.map +1 -1
  88. package/dist/lib/features/dependent-features/dependent-features-read-model-type.d.ts.map +1 -1
  89. package/dist/lib/features/dependent-features/dependent-features-read-model.d.ts.map +1 -1
  90. package/dist/lib/features/dependent-features/dependent-features-read-model.js.map +1 -1
  91. package/dist/lib/features/dependent-features/fake-dependent-features-read-model.d.ts.map +1 -1
  92. package/dist/lib/features/dependent-features/fake-dependent-features-read-model.js.map +1 -1
  93. package/dist/lib/features/events/createEventsService.d.ts +6 -0
  94. package/dist/lib/features/events/createEventsService.d.ts.map +1 -0
  95. package/dist/lib/features/events/createEventsService.js +24 -0
  96. package/dist/lib/features/events/createEventsService.js.map +1 -0
  97. package/dist/lib/features/events/event-created-by-migration.test.d.ts +2 -0
  98. package/dist/lib/features/events/event-created-by-migration.test.d.ts.map +1 -0
  99. package/dist/lib/features/events/event-created-by-migration.test.js +130 -0
  100. package/dist/lib/features/events/event-created-by-migration.test.js.map +1 -0
  101. package/dist/lib/features/events/event-service.d.ts +35 -0
  102. package/dist/lib/features/events/event-service.d.ts.map +1 -0
  103. package/dist/lib/features/events/event-service.js +103 -0
  104. package/dist/lib/features/events/event-service.js.map +1 -0
  105. package/dist/lib/features/events/event-service.test.d.ts +2 -0
  106. package/dist/lib/features/events/event-service.test.d.ts.map +1 -0
  107. package/dist/lib/features/events/event-service.test.js +22 -0
  108. package/dist/lib/features/events/event-service.test.js.map +1 -0
  109. package/dist/lib/features/events/event-store.d.ts +100 -0
  110. package/dist/lib/features/events/event-store.d.ts.map +1 -0
  111. package/dist/lib/features/events/event-store.js +340 -0
  112. package/dist/lib/features/events/event-store.js.map +1 -0
  113. package/dist/lib/features/events/event-store.test.d.ts.map +1 -0
  114. package/dist/lib/{db → features/events}/event-store.test.js +9 -5
  115. package/dist/lib/features/events/event-store.test.js.map +1 -0
  116. package/dist/lib/features/export-import-toggles/createExportImportService.d.ts +1 -1
  117. package/dist/lib/features/export-import-toggles/createExportImportService.d.ts.map +1 -1
  118. package/dist/lib/features/export-import-toggles/createExportImportService.js +4 -6
  119. package/dist/lib/features/export-import-toggles/createExportImportService.js.map +1 -1
  120. package/dist/lib/features/export-import-toggles/export-import-permissions.e2e.test.js.map +1 -1
  121. package/dist/lib/features/export-import-toggles/export-import-service.d.ts.map +1 -1
  122. package/dist/lib/features/export-import-toggles/export-import-service.js +5 -1
  123. package/dist/lib/features/export-import-toggles/export-import-service.js.map +1 -1
  124. package/dist/lib/features/export-import-toggles/export-import.e2e.test.js +60 -0
  125. package/dist/lib/features/export-import-toggles/export-import.e2e.test.js.map +1 -1
  126. package/dist/lib/features/export-import-toggles/import-permissions-service.d.ts.map +1 -1
  127. package/dist/lib/features/export-import-toggles/import-permissions-service.js.map +1 -1
  128. package/dist/lib/features/feature-search/fake-feature-search-store.d.ts +1 -1
  129. package/dist/lib/features/feature-search/fake-feature-search-store.d.ts.map +1 -1
  130. package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
  131. package/dist/lib/features/feature-search/feature-search-controller.js +35 -38
  132. package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
  133. package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
  134. package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
  135. package/dist/lib/features/feature-search/feature.search.e2e.test.js +0 -1
  136. package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
  137. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.d.ts.map +1 -1
  138. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js +1 -1
  139. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js.map +1 -1
  140. package/dist/lib/features/feature-toggle/converters/feature-toggle-row-converter.d.ts +1 -1
  141. package/dist/lib/features/feature-toggle/createFeatureToggleService.d.ts.map +1 -1
  142. package/dist/lib/features/feature-toggle/createFeatureToggleService.js +6 -6
  143. package/dist/lib/features/feature-toggle/createFeatureToggleService.js.map +1 -1
  144. package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.d.ts +3 -2
  145. package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.d.ts.map +1 -1
  146. package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.js +3 -0
  147. package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.js.map +1 -1
  148. package/dist/lib/features/feature-toggle/feature-toggle-service.d.ts +7 -4
  149. package/dist/lib/features/feature-toggle/feature-toggle-service.d.ts.map +1 -1
  150. package/dist/lib/features/feature-toggle/feature-toggle-service.js +51 -7
  151. package/dist/lib/features/feature-toggle/feature-toggle-service.js.map +1 -1
  152. package/dist/lib/features/feature-toggle/feature-toggle-store.d.ts +2 -1
  153. package/dist/lib/features/feature-toggle/feature-toggle-store.d.ts.map +1 -1
  154. package/dist/lib/features/feature-toggle/feature-toggle-store.js +27 -0
  155. package/dist/lib/features/feature-toggle/feature-toggle-store.js.map +1 -1
  156. package/dist/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.js +3 -0
  157. package/dist/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.js.map +1 -1
  158. package/dist/lib/features/feature-toggle/tests/feature-toggle-store.e2e.test.js.map +1 -1
  159. package/dist/lib/features/feature-toggle/tests/feature-toggle-strategies-store.e2e.test.js +3 -3
  160. package/dist/lib/features/feature-toggle/tests/feature-toggle-strategies-store.e2e.test.js.map +1 -1
  161. package/dist/lib/features/feature-toggle/tests/feature-toggles.e2e.test.js +36 -0
  162. package/dist/lib/features/feature-toggle/tests/feature-toggles.e2e.test.js.map +1 -1
  163. package/dist/lib/features/feature-toggle/types/feature-toggle-store-type.d.ts +2 -1
  164. package/dist/lib/features/feature-toggle/types/feature-toggle-store-type.d.ts.map +1 -1
  165. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts.map +1 -1
  166. package/dist/lib/features/group/createGroupService.d.ts.map +1 -1
  167. package/dist/lib/features/group/createGroupService.js +3 -6
  168. package/dist/lib/features/group/createGroupService.js.map +1 -1
  169. package/dist/lib/features/index.d.ts +2 -0
  170. package/dist/lib/features/index.d.ts.map +1 -1
  171. package/dist/lib/features/index.js +2 -0
  172. package/dist/lib/features/index.js.map +1 -1
  173. package/dist/lib/features/instance-stats/createInstanceStatsService.d.ts +6 -0
  174. package/dist/lib/features/instance-stats/createInstanceStatsService.d.ts.map +1 -0
  175. package/dist/lib/features/instance-stats/createInstanceStatsService.js +129 -0
  176. package/dist/lib/features/instance-stats/createInstanceStatsService.js.map +1 -0
  177. package/dist/lib/features/instance-stats/getActiveUsers.d.ts +1 -1
  178. package/dist/lib/features/instance-stats/getActiveUsers.d.ts.map +1 -1
  179. package/dist/lib/features/instance-stats/getProductionChanges.d.ts +1 -1
  180. package/dist/lib/features/instance-stats/getProductionChanges.d.ts.map +1 -1
  181. package/dist/lib/features/instance-stats/getProductionChanges.js.map +1 -1
  182. package/dist/lib/features/instance-stats/instance-stats-service.d.ts +6 -1
  183. package/dist/lib/features/instance-stats/instance-stats-service.d.ts.map +1 -1
  184. package/dist/lib/features/instance-stats/instance-stats-service.js +5 -2
  185. package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
  186. package/dist/lib/features/maintenance/maintenance-controller.d.ts +1 -1
  187. package/dist/lib/features/maintenance/maintenance-controller.d.ts.map +1 -1
  188. package/dist/lib/features/maintenance/maintenance-service.js +1 -1
  189. package/dist/lib/features/maintenance/maintenance-service.js.map +1 -1
  190. package/dist/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.d.ts.map +1 -0
  191. package/dist/{test/e2e/services → lib/features/metrics/client-metrics}/client-metrics-service.e2e.test.js +6 -6
  192. package/dist/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.js.map +1 -0
  193. package/dist/lib/{types/stores/client-metrics-store-v2.d.ts → features/metrics/client-metrics/client-metrics-store-v2-type.d.ts} +13 -2
  194. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2-type.d.ts.map +1 -0
  195. package/dist/lib/{types/stores/client-metrics-store-v2.js → features/metrics/client-metrics/client-metrics-store-v2-type.js} +1 -1
  196. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2-type.js.map +1 -0
  197. package/dist/lib/{db → features/metrics/client-metrics}/client-metrics-store-v2.d.ts +15 -4
  198. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.d.ts.map +1 -0
  199. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.d.ts.map +1 -0
  200. package/dist/{test/e2e/stores → lib/features/metrics/client-metrics}/client-metrics-store-v2.e2e.test.js +2 -2
  201. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.js.map +1 -0
  202. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.js +300 -0
  203. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.js.map +1 -0
  204. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.d.ts +2 -0
  205. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.d.ts.map +1 -0
  206. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.js +202 -0
  207. package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.js.map +1 -0
  208. package/dist/lib/{routes/admin-api → features/metrics/client-metrics}/client-metrics.d.ts +7 -5
  209. package/dist/lib/features/metrics/client-metrics/client-metrics.d.ts.map +1 -0
  210. package/dist/lib/features/metrics/client-metrics/client-metrics.e2e.test.d.ts.map +1 -0
  211. package/dist/{test/e2e/api/admin → lib/features/metrics/client-metrics}/client-metrics.e2e.test.js +8 -4
  212. package/dist/lib/features/metrics/client-metrics/client-metrics.e2e.test.js.map +1 -0
  213. package/dist/lib/{routes/admin-api → features/metrics/client-metrics}/client-metrics.js +13 -9
  214. package/dist/lib/{routes/admin-api → features/metrics/client-metrics}/client-metrics.js.map +1 -1
  215. package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.d.ts +1 -1
  216. package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.d.ts.map +1 -0
  217. package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.js.map +1 -0
  218. package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.d.ts.map +1 -0
  219. package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.js.map +1 -0
  220. package/dist/{test/fixtures → lib/features/metrics/client-metrics}/fake-client-metrics-store-v2.d.ts +12 -1
  221. package/dist/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.d.ts.map +1 -0
  222. package/dist/{test/fixtures → lib/features/metrics/client-metrics}/fake-client-metrics-store-v2.js +15 -0
  223. package/dist/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.js.map +1 -0
  224. package/dist/lib/{services → features/metrics}/client-metrics/metrics-service-v2.d.ts +11 -8
  225. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.d.ts.map +1 -0
  226. package/dist/lib/{services → features/metrics}/client-metrics/metrics-service-v2.js +54 -9
  227. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.js.map +1 -0
  228. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.test.d.ts.map +1 -0
  229. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.test.js +271 -0
  230. package/dist/lib/features/metrics/client-metrics/metrics-service-v2.test.js.map +1 -0
  231. package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.d.ts +9 -8
  232. package/dist/lib/features/metrics/instance/instance-service.d.ts.map +1 -0
  233. package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.js +18 -5
  234. package/dist/lib/features/metrics/instance/instance-service.js.map +1 -0
  235. package/dist/lib/features/metrics/instance/instance-service.test.d.ts.map +1 -0
  236. package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.test.js +18 -15
  237. package/dist/lib/features/metrics/instance/instance-service.test.js.map +1 -0
  238. package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.d.ts +9 -7
  239. package/dist/lib/features/metrics/instance/metrics.d.ts.map +1 -0
  240. package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.js +51 -4
  241. package/dist/lib/features/metrics/instance/metrics.js.map +1 -0
  242. package/dist/lib/features/metrics/instance/metrics.test.d.ts.map +1 -0
  243. package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.test.js +124 -7
  244. package/dist/lib/features/metrics/instance/metrics.test.js.map +1 -0
  245. package/dist/lib/{services/client-metrics → features/metrics/instance}/models.d.ts +1 -1
  246. package/dist/lib/features/metrics/instance/models.d.ts.map +1 -0
  247. package/dist/lib/features/metrics/instance/models.js.map +1 -0
  248. package/dist/lib/{routes/client-api → features/metrics/instance}/register.d.ts +8 -8
  249. package/dist/lib/features/metrics/instance/register.d.ts.map +1 -0
  250. package/dist/lib/{routes/client-api → features/metrics/instance}/register.js +8 -7
  251. package/dist/lib/features/metrics/instance/register.js.map +1 -0
  252. package/dist/lib/features/metrics/instance/register.test.d.ts.map +1 -0
  253. package/dist/lib/{routes/client-api → features/metrics/instance}/register.test.js +20 -5
  254. package/dist/lib/features/metrics/instance/register.test.js.map +1 -0
  255. package/dist/lib/features/metrics/last-seen/createLastSeenService.d.ts.map +1 -0
  256. package/dist/lib/{services/client-metrics → features/metrics}/last-seen/createLastSeenService.js +2 -2
  257. package/dist/lib/features/metrics/last-seen/createLastSeenService.js.map +1 -0
  258. package/dist/lib/features/metrics/last-seen/fake-last-seen-read-model.d.ts.map +1 -0
  259. package/dist/lib/features/metrics/last-seen/fake-last-seen-read-model.js.map +1 -0
  260. package/dist/lib/features/metrics/last-seen/fake-last-seen-store.d.ts.map +1 -0
  261. package/dist/lib/features/metrics/last-seen/fake-last-seen-store.js.map +1 -0
  262. package/dist/lib/features/metrics/last-seen/last-seen-read-model.d.ts.map +1 -0
  263. package/dist/lib/features/metrics/last-seen/last-seen-read-model.js.map +1 -0
  264. package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-service.d.ts +2 -2
  265. package/dist/lib/features/metrics/last-seen/last-seen-service.d.ts.map +1 -0
  266. package/dist/lib/features/metrics/last-seen/last-seen-service.js.map +1 -0
  267. package/dist/lib/features/metrics/last-seen/last-seen-store.d.ts.map +1 -0
  268. package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-store.js +1 -1
  269. package/dist/lib/features/metrics/last-seen/last-seen-store.js.map +1 -0
  270. package/dist/lib/features/metrics/last-seen/tests/last-seen-service.e2e.test.d.ts.map +1 -0
  271. package/dist/lib/features/metrics/last-seen/tests/last-seen-service.e2e.test.js.map +1 -0
  272. package/dist/lib/features/metrics/last-seen/tests/last-seen-service.test.d.ts.map +1 -0
  273. package/dist/lib/features/metrics/last-seen/tests/last-seen-service.test.js.map +1 -0
  274. package/dist/lib/features/metrics/last-seen/types/last-seen-read-model-type.d.ts.map +1 -0
  275. package/dist/lib/features/metrics/last-seen/types/last-seen-read-model-type.js.map +1 -0
  276. package/dist/lib/features/metrics/last-seen/types/last-seen-store-type.d.ts.map +1 -0
  277. package/dist/lib/features/metrics/last-seen/types/last-seen-store-type.js.map +1 -0
  278. package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.d.ts +1 -1
  279. package/dist/lib/features/metrics/shared/schema.d.ts.map +1 -0
  280. package/dist/lib/features/metrics/shared/schema.js.map +1 -0
  281. package/dist/lib/features/metrics/shared/schema.test.d.ts.map +1 -0
  282. package/dist/lib/features/metrics/shared/schema.test.js.map +1 -0
  283. package/dist/lib/features/playground/advanced-playground.test.js +12 -13
  284. package/dist/lib/features/playground/advanced-playground.test.js.map +1 -1
  285. package/dist/lib/features/playground/feature-evaluator/client.d.ts +2 -2
  286. package/dist/lib/features/playground/feature-evaluator/client.d.ts.map +1 -1
  287. package/dist/lib/features/playground/feature-evaluator/client.js +17 -7
  288. package/dist/lib/features/playground/feature-evaluator/client.js.map +1 -1
  289. package/dist/lib/features/playground/feature-evaluator/feature-evaluator.d.ts.map +1 -1
  290. package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js +3 -2
  291. package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js.map +1 -1
  292. package/dist/lib/features/playground/feature-evaluator/repository/index.d.ts.map +1 -1
  293. package/dist/lib/features/playground/feature-evaluator/repository/storage-provider.js.map +1 -1
  294. package/dist/lib/features/playground/feature-evaluator/strategy/strategy.d.ts +2 -2
  295. package/dist/lib/features/playground/feature-evaluator/strategy/strategy.d.ts.map +1 -1
  296. package/dist/lib/features/playground/feature-evaluator/variant.d.ts +5 -0
  297. package/dist/lib/features/playground/feature-evaluator/variant.d.ts.map +1 -1
  298. package/dist/lib/features/playground/feature-evaluator/variant.js.map +1 -1
  299. package/dist/lib/features/playground/offline-unleash-client.d.ts +3 -3
  300. package/dist/lib/features/playground/offline-unleash-client.d.ts.map +1 -1
  301. package/dist/lib/features/playground/offline-unleash-client.js +5 -2
  302. package/dist/lib/features/playground/offline-unleash-client.js.map +1 -1
  303. package/dist/lib/features/playground/offline-unleash-client.test.js +1 -1
  304. package/dist/lib/features/playground/offline-unleash-client.test.js.map +1 -1
  305. package/dist/lib/features/playground/playground-service.d.ts +6 -6
  306. package/dist/lib/features/playground/playground-service.d.ts.map +1 -1
  307. package/dist/lib/features/playground/playground-service.js +7 -3
  308. package/dist/lib/features/playground/playground-service.js.map +1 -1
  309. package/dist/lib/features/playground/playground-view-model.d.ts +1 -1
  310. package/dist/lib/features/playground/playground-view-model.d.ts.map +1 -1
  311. package/dist/lib/features/playground/playground.d.ts.map +1 -1
  312. package/dist/lib/features/playground/playground.js +2 -1
  313. package/dist/lib/features/playground/playground.js.map +1 -1
  314. package/dist/lib/features/private-project/createPrivateProjectChecker.d.ts +1 -1
  315. package/dist/lib/features/private-project/createPrivateProjectChecker.d.ts.map +1 -1
  316. package/dist/lib/features/private-project/privateProjectStore.js +1 -1
  317. package/dist/lib/features/private-project/privateProjectStore.js.map +1 -1
  318. package/dist/lib/features/project/createProjectService.d.ts +1 -1
  319. package/dist/lib/features/project/createProjectService.d.ts.map +1 -1
  320. package/dist/lib/features/project/createProjectService.js +2 -2
  321. package/dist/lib/features/project/createProjectService.js.map +1 -1
  322. package/dist/lib/features/project-environments/createEnvironmentService.d.ts.map +1 -1
  323. package/dist/lib/features/project-environments/createEnvironmentService.js +2 -8
  324. package/dist/lib/features/project-environments/createEnvironmentService.js.map +1 -1
  325. package/dist/lib/features/project-environments/environment-service.d.ts +1 -1
  326. package/dist/lib/features/project-environments/environment-service.d.ts.map +1 -1
  327. package/dist/lib/features/project-environments/environment-service.test.js.map +1 -1
  328. package/dist/lib/features/project-environments/environment-store.d.ts.map +1 -1
  329. package/dist/lib/features/project-environments/environment-store.js +12 -0
  330. package/dist/lib/features/project-environments/environment-store.js.map +1 -1
  331. package/dist/lib/features/project-environments/environments.d.ts.map +1 -1
  332. package/dist/lib/features/scheduler/schedule-services.d.ts.map +1 -1
  333. package/dist/lib/features/scheduler/schedule-services.js +3 -1
  334. package/dist/lib/features/scheduler/schedule-services.js.map +1 -1
  335. package/dist/lib/features/scheduler/scheduler-service.d.ts +2 -1
  336. package/dist/lib/features/scheduler/scheduler-service.d.ts.map +1 -1
  337. package/dist/lib/features/scheduler/scheduler-service.js +42 -13
  338. package/dist/lib/features/scheduler/scheduler-service.js.map +1 -1
  339. package/dist/lib/features/scheduler/scheduler-service.test.js +35 -2
  340. package/dist/lib/features/scheduler/scheduler-service.test.js.map +1 -1
  341. package/dist/lib/features/segment/createSegmentService.d.ts +1 -1
  342. package/dist/lib/features/segment/createSegmentService.d.ts.map +1 -1
  343. package/dist/lib/features/segment/createSegmentService.js +2 -7
  344. package/dist/lib/features/segment/createSegmentService.js.map +1 -1
  345. package/dist/lib/features/segment/segment-controller.d.ts.map +1 -1
  346. package/dist/lib/features/segment/segment-controller.js +14 -25
  347. package/dist/lib/features/segment/segment-controller.js.map +1 -1
  348. package/dist/lib/features/tag-type/createTagTypeService.d.ts.map +1 -1
  349. package/dist/lib/features/tag-type/createTagTypeService.js +3 -17
  350. package/dist/lib/features/tag-type/createTagTypeService.js.map +1 -1
  351. package/dist/lib/features/tag-type/tag-type-service.d.ts +1 -1
  352. package/dist/lib/features/tag-type/tag-type-service.d.ts.map +1 -1
  353. package/dist/lib/features/tag-type/tag-types.e2e.test.js.map +1 -1
  354. package/dist/lib/metric-events.d.ts +3 -1
  355. package/dist/lib/metric-events.d.ts.map +1 -1
  356. package/dist/lib/metric-events.js +5 -1
  357. package/dist/lib/metric-events.js.map +1 -1
  358. package/dist/lib/metrics.d.ts +2 -3
  359. package/dist/lib/metrics.d.ts.map +1 -1
  360. package/dist/lib/metrics.js +150 -89
  361. package/dist/lib/metrics.js.map +1 -1
  362. package/dist/lib/metrics.test.js.map +1 -1
  363. package/dist/lib/middleware/api-token-middleware.d.ts +1 -1
  364. package/dist/lib/middleware/api-token-middleware.d.ts.map +1 -1
  365. package/dist/lib/middleware/demo-authentication.d.ts +1 -1
  366. package/dist/lib/middleware/demo-authentication.d.ts.map +1 -1
  367. package/dist/lib/middleware/demo-authentication.js +6 -2
  368. package/dist/lib/middleware/demo-authentication.js.map +1 -1
  369. package/dist/lib/middleware/pat-middleware.d.ts +4 -1
  370. package/dist/lib/middleware/pat-middleware.d.ts.map +1 -1
  371. package/dist/lib/middleware/pat-middleware.js +0 -1
  372. package/dist/lib/middleware/pat-middleware.js.map +1 -1
  373. package/dist/lib/middleware/pat-middleware.test.js +5 -0
  374. package/dist/lib/middleware/pat-middleware.test.js.map +1 -1
  375. package/dist/lib/middleware/response-time-metrics.d.ts +1 -1
  376. package/dist/lib/middleware/response-time-metrics.d.ts.map +1 -1
  377. package/dist/lib/middleware/response-time-metrics.js.map +1 -1
  378. package/dist/lib/middleware/session-db.js.map +1 -1
  379. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts +4 -0
  380. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts.map +1 -1
  381. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js +4 -0
  382. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js.map +1 -1
  383. package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts +4 -0
  384. package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts.map +1 -1
  385. package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts +8 -0
  386. package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts.map +1 -1
  387. package/dist/lib/openapi/spec/create-api-token-schema.d.ts +1 -1
  388. package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
  389. package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
  390. package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
  391. package/dist/lib/openapi/spec/feature-type-count-schema.d.ts.map +1 -1
  392. package/dist/lib/openapi/spec/feature-type-count-schema.js.map +1 -1
  393. package/dist/lib/openapi/spec/feature-type-count-schema.test.js.map +1 -1
  394. package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts +18 -0
  395. package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts.map +1 -1
  396. package/dist/lib/openapi/spec/instance-admin-stats-schema.js +18 -0
  397. package/dist/lib/openapi/spec/instance-admin-stats-schema.js.map +1 -1
  398. package/dist/lib/openapi/spec/playground-feature-schema.d.ts +11 -0
  399. package/dist/lib/openapi/spec/playground-feature-schema.d.ts.map +1 -1
  400. package/dist/lib/openapi/spec/playground-feature-schema.js +11 -0
  401. package/dist/lib/openapi/spec/playground-feature-schema.js.map +1 -1
  402. package/dist/lib/openapi/spec/playground-response-schema.d.ts +11 -0
  403. package/dist/lib/openapi/spec/playground-response-schema.d.ts.map +1 -1
  404. package/dist/lib/openapi/spec/project-overview-schema.test.js.map +1 -1
  405. package/dist/lib/openapi/spec/project-schema.d.ts +15 -0
  406. package/dist/lib/openapi/spec/project-schema.d.ts.map +1 -1
  407. package/dist/lib/openapi/spec/project-schema.js +15 -0
  408. package/dist/lib/openapi/spec/project-schema.js.map +1 -1
  409. package/dist/lib/openapi/spec/projects-schema.d.ts +15 -0
  410. package/dist/lib/openapi/spec/projects-schema.d.ts.map +1 -1
  411. package/dist/lib/openapi/spec/proxy-feature-schema.d.ts +12 -1
  412. package/dist/lib/openapi/spec/proxy-feature-schema.d.ts.map +1 -1
  413. package/dist/lib/openapi/spec/proxy-feature-schema.js +12 -1
  414. package/dist/lib/openapi/spec/proxy-feature-schema.js.map +1 -1
  415. package/dist/lib/openapi/spec/proxy-features-schema.d.ts +12 -1
  416. package/dist/lib/openapi/spec/proxy-features-schema.d.ts.map +1 -1
  417. package/dist/lib/openapi/spec/search-events-schema.d.ts +1 -1
  418. package/dist/lib/openapi/spec/state-schema.d.ts +15 -0
  419. package/dist/lib/openapi/spec/state-schema.d.ts.map +1 -1
  420. package/dist/lib/openapi/spec/ui-config-schema.d.ts +12 -1
  421. package/dist/lib/openapi/spec/ui-config-schema.d.ts.map +1 -1
  422. package/dist/lib/openapi/spec/variant-flag-schema.d.ts +12 -1
  423. package/dist/lib/openapi/spec/variant-flag-schema.d.ts.map +1 -1
  424. package/dist/lib/openapi/spec/variant-flag-schema.js +12 -1
  425. package/dist/lib/openapi/spec/variant-flag-schema.js.map +1 -1
  426. package/dist/lib/proxy/proxy-repository.d.ts.map +1 -1
  427. package/dist/lib/proxy/proxy-repository.js.map +1 -1
  428. package/dist/lib/routes/admin-api/addon.d.ts +1 -1
  429. package/dist/lib/routes/admin-api/addon.d.ts.map +1 -1
  430. package/dist/lib/routes/admin-api/api-token.d.ts +1 -0
  431. package/dist/lib/routes/admin-api/api-token.d.ts.map +1 -1
  432. package/dist/lib/routes/admin-api/api-token.js +5 -0
  433. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  434. package/dist/lib/routes/admin-api/api-token.test.d.ts +2 -0
  435. package/dist/lib/routes/admin-api/api-token.test.d.ts.map +1 -0
  436. package/dist/lib/routes/admin-api/api-token.test.js +105 -0
  437. package/dist/lib/routes/admin-api/api-token.test.js.map +1 -0
  438. package/dist/lib/routes/admin-api/config.d.ts +3 -1
  439. package/dist/lib/routes/admin-api/config.d.ts.map +1 -1
  440. package/dist/lib/routes/admin-api/config.js +15 -3
  441. package/dist/lib/routes/admin-api/config.js.map +1 -1
  442. package/dist/lib/routes/admin-api/config.test.js +44 -0
  443. package/dist/lib/routes/admin-api/config.test.js.map +1 -1
  444. package/dist/lib/routes/admin-api/context.d.ts +2 -2
  445. package/dist/lib/routes/admin-api/context.d.ts.map +1 -1
  446. package/dist/lib/routes/admin-api/context.js +1 -1
  447. package/dist/lib/routes/admin-api/context.js.map +1 -1
  448. package/dist/lib/routes/admin-api/context.test.js.map +1 -1
  449. package/dist/lib/routes/admin-api/index.js +1 -1
  450. package/dist/lib/routes/admin-api/index.js.map +1 -1
  451. package/dist/lib/routes/admin-api/instance-admin.d.ts.map +1 -1
  452. package/dist/lib/routes/admin-api/instance-admin.js +4 -0
  453. package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
  454. package/dist/lib/routes/admin-api/metrics.d.ts.map +1 -1
  455. package/dist/lib/routes/admin-api/metrics.js +2 -1
  456. package/dist/lib/routes/admin-api/metrics.js.map +1 -1
  457. package/dist/lib/routes/admin-api/metrics.test.js.map +1 -1
  458. package/dist/lib/routes/admin-api/project/project-api.d.ts +1 -1
  459. package/dist/lib/routes/admin-api/project/project-api.d.ts.map +1 -1
  460. package/dist/lib/routes/admin-api/project/project-api.js.map +1 -1
  461. package/dist/lib/routes/admin-api/project/variants.d.ts +2 -2
  462. package/dist/lib/routes/admin-api/project/variants.d.ts.map +1 -1
  463. package/dist/lib/routes/admin-api/public-signup.test.js +14 -3
  464. package/dist/lib/routes/admin-api/public-signup.test.js.map +1 -1
  465. package/dist/lib/routes/admin-api/state.d.ts.map +1 -1
  466. package/dist/lib/routes/admin-api/state.js +1 -0
  467. package/dist/lib/routes/admin-api/state.js.map +1 -1
  468. package/dist/lib/routes/admin-api/tag.test.js.map +1 -1
  469. package/dist/lib/routes/admin-api/telemetry.d.ts +2 -2
  470. package/dist/lib/routes/admin-api/telemetry.d.ts.map +1 -1
  471. package/dist/lib/routes/client-api/index.js +2 -2
  472. package/dist/lib/routes/client-api/index.js.map +1 -1
  473. package/dist/lib/routes/controller.d.ts.map +1 -1
  474. package/dist/lib/routes/controller.js.map +1 -1
  475. package/dist/lib/routes/edge-api/index.js +2 -2
  476. package/dist/lib/routes/edge-api/index.js.map +1 -1
  477. package/dist/lib/routes/health-check.test.js.map +1 -1
  478. package/dist/lib/routes/public-invite.test.js +7 -2
  479. package/dist/lib/routes/public-invite.test.js.map +1 -1
  480. package/dist/lib/segments/segment-service-interface.d.ts +3 -3
  481. package/dist/lib/segments/segment-service-interface.d.ts.map +1 -1
  482. package/dist/lib/server-impl.d.ts.map +1 -1
  483. package/dist/lib/server-impl.js +4 -3
  484. package/dist/lib/server-impl.js.map +1 -1
  485. package/dist/lib/services/access-service.d.ts +10 -3
  486. package/dist/lib/services/access-service.d.ts.map +1 -1
  487. package/dist/lib/services/access-service.js.map +1 -1
  488. package/dist/lib/services/access-service.test.js +2 -5
  489. package/dist/lib/services/access-service.test.js.map +1 -1
  490. package/dist/lib/services/account-service.d.ts +1 -1
  491. package/dist/lib/services/account-service.d.ts.map +1 -1
  492. package/dist/lib/services/account-service.js.map +1 -1
  493. package/dist/lib/services/addon-service.d.ts +1 -1
  494. package/dist/lib/services/addon-service.d.ts.map +1 -1
  495. package/dist/lib/services/addon-service.test.js +6 -2
  496. package/dist/lib/services/addon-service.test.js.map +1 -1
  497. package/dist/lib/services/api-token-service.d.ts +9 -2
  498. package/dist/lib/services/api-token-service.d.ts.map +1 -1
  499. package/dist/lib/services/api-token-service.js +22 -3
  500. package/dist/lib/services/api-token-service.js.map +1 -1
  501. package/dist/lib/services/api-token-service.test.js +20 -5
  502. package/dist/lib/services/api-token-service.test.js.map +1 -1
  503. package/dist/lib/services/context-service.d.ts +1 -1
  504. package/dist/lib/services/context-service.d.ts.map +1 -1
  505. package/dist/lib/services/context-service.js.map +1 -1
  506. package/dist/lib/services/email-service.d.ts +1 -1
  507. package/dist/lib/services/email-service.d.ts.map +1 -1
  508. package/dist/lib/services/email-service.js +5 -1
  509. package/dist/lib/services/email-service.js.map +1 -1
  510. package/dist/lib/services/event-service.d.ts +3 -18
  511. package/dist/lib/services/event-service.d.ts.map +1 -1
  512. package/dist/lib/services/event-service.js +21 -58
  513. package/dist/lib/services/event-service.js.map +1 -1
  514. package/dist/lib/services/favorites-service.d.ts +1 -1
  515. package/dist/lib/services/favorites-service.d.ts.map +1 -1
  516. package/dist/lib/services/feature-service-potentially-stale.test.js +1 -1
  517. package/dist/lib/services/feature-service-potentially-stale.test.js.map +1 -1
  518. package/dist/lib/services/feature-tag-service.d.ts +1 -1
  519. package/dist/lib/services/feature-tag-service.d.ts.map +1 -1
  520. package/dist/lib/services/feature-type-service.d.ts +1 -1
  521. package/dist/lib/services/feature-type-service.d.ts.map +1 -1
  522. package/dist/lib/services/feature-type-service.js.map +1 -1
  523. package/dist/lib/services/group-service.d.ts +1 -1
  524. package/dist/lib/services/group-service.d.ts.map +1 -1
  525. package/dist/lib/services/index.d.ts +4 -4
  526. package/dist/lib/services/index.d.ts.map +1 -1
  527. package/dist/lib/services/index.js +9 -6
  528. package/dist/lib/services/index.js.map +1 -1
  529. package/dist/lib/services/pat-service.d.ts +1 -1
  530. package/dist/lib/services/pat-service.d.ts.map +1 -1
  531. package/dist/lib/services/project-service.d.ts +3 -3
  532. package/dist/lib/services/project-service.d.ts.map +1 -1
  533. package/dist/lib/services/proxy-service.d.ts.map +1 -1
  534. package/dist/lib/services/proxy-service.js.map +1 -1
  535. package/dist/lib/services/public-signup-token-service.d.ts +2 -2
  536. package/dist/lib/services/public-signup-token-service.d.ts.map +1 -1
  537. package/dist/lib/services/reset-token-service.js.map +1 -1
  538. package/dist/lib/services/segment-service.d.ts +2 -2
  539. package/dist/lib/services/segment-service.d.ts.map +1 -1
  540. package/dist/lib/services/segment-service.js +1 -2
  541. package/dist/lib/services/segment-service.js.map +1 -1
  542. package/dist/lib/services/setting-service.d.ts +1 -1
  543. package/dist/lib/services/setting-service.d.ts.map +1 -1
  544. package/dist/lib/services/state-service.d.ts +1 -1
  545. package/dist/lib/services/state-service.d.ts.map +1 -1
  546. package/dist/lib/services/state-service.js +1 -0
  547. package/dist/lib/services/state-service.js.map +1 -1
  548. package/dist/lib/services/state-service.test.js +14 -4
  549. package/dist/lib/services/state-service.test.js.map +1 -1
  550. package/dist/lib/services/state-util.d.ts.map +1 -1
  551. package/dist/lib/services/state-util.js.map +1 -1
  552. package/dist/lib/services/strategy-service.d.ts +1 -1
  553. package/dist/lib/services/strategy-service.d.ts.map +1 -1
  554. package/dist/lib/services/tag-service.d.ts +1 -1
  555. package/dist/lib/services/tag-service.d.ts.map +1 -1
  556. package/dist/lib/services/user-service.d.ts +1 -1
  557. package/dist/lib/services/user-service.d.ts.map +1 -1
  558. package/dist/lib/services/user-service.js +6 -3
  559. package/dist/lib/services/user-service.js.map +1 -1
  560. package/dist/lib/services/user-service.test.js +1 -1
  561. package/dist/lib/services/user-service.test.js.map +1 -1
  562. package/dist/lib/services/version-service.d.ts.map +1 -1
  563. package/dist/lib/services/version-service.js.map +1 -1
  564. package/dist/lib/types/api-user.d.ts +1 -0
  565. package/dist/lib/types/api-user.d.ts.map +1 -1
  566. package/dist/lib/types/api-user.js.map +1 -1
  567. package/dist/lib/types/core.d.ts +2 -1
  568. package/dist/lib/types/core.d.ts.map +1 -1
  569. package/dist/lib/types/core.js +10 -3
  570. package/dist/lib/types/core.js.map +1 -1
  571. package/dist/lib/types/core.test.d.ts +2 -0
  572. package/dist/lib/types/core.test.d.ts.map +1 -0
  573. package/dist/lib/types/core.test.js +62 -0
  574. package/dist/lib/types/core.test.js.map +1 -0
  575. package/dist/lib/types/events.d.ts +19 -2
  576. package/dist/lib/types/events.d.ts.map +1 -1
  577. package/dist/lib/types/events.js +10 -4
  578. package/dist/lib/types/events.js.map +1 -1
  579. package/dist/lib/types/experimental.d.ts +1 -1
  580. package/dist/lib/types/experimental.d.ts.map +1 -1
  581. package/dist/lib/types/experimental.js +29 -6
  582. package/dist/lib/types/experimental.js.map +1 -1
  583. package/dist/lib/types/model.d.ts +4 -1
  584. package/dist/lib/types/model.d.ts.map +1 -1
  585. package/dist/lib/types/models/api-token.js +1 -1
  586. package/dist/lib/types/models/api-token.js.map +1 -1
  587. package/dist/lib/types/no-auth-user.d.ts +0 -1
  588. package/dist/lib/types/no-auth-user.d.ts.map +1 -1
  589. package/dist/lib/types/no-auth-user.js +1 -3
  590. package/dist/lib/types/no-auth-user.js.map +1 -1
  591. package/dist/lib/types/option.d.ts +2 -1
  592. package/dist/lib/types/option.d.ts.map +1 -1
  593. package/dist/lib/types/permissions.d.ts +8 -0
  594. package/dist/lib/types/permissions.d.ts.map +1 -1
  595. package/dist/lib/types/permissions.js +9 -1
  596. package/dist/lib/types/permissions.js.map +1 -1
  597. package/dist/lib/types/services.d.ts +9 -9
  598. package/dist/lib/types/services.d.ts.map +1 -1
  599. package/dist/lib/types/stores/access-store.d.ts +1 -1
  600. package/dist/lib/types/stores/access-store.d.ts.map +1 -1
  601. package/dist/lib/types/stores/client-instance-store.d.ts +1 -0
  602. package/dist/lib/types/stores/client-instance-store.d.ts.map +1 -1
  603. package/dist/lib/types/stores/event-store.d.ts +2 -1
  604. package/dist/lib/types/stores/event-store.d.ts.map +1 -1
  605. package/dist/lib/types/stores/project-stats-store-type.d.ts +2 -2
  606. package/dist/lib/types/stores/project-stats-store-type.d.ts.map +1 -1
  607. package/dist/lib/types/stores/role-store.d.ts +1 -1
  608. package/dist/lib/types/stores/role-store.d.ts.map +1 -1
  609. package/dist/lib/types/stores/strategy-store.d.ts +1 -1
  610. package/dist/lib/types/stores/strategy-store.d.ts.map +1 -1
  611. package/dist/lib/types/stores.d.ts +2 -2
  612. package/dist/lib/types/stores.d.ts.map +1 -1
  613. package/dist/lib/util/anonymise.d.ts +1 -0
  614. package/dist/lib/util/anonymise.d.ts.map +1 -1
  615. package/dist/lib/util/anonymise.js +13 -1
  616. package/dist/lib/util/anonymise.js.map +1 -1
  617. package/dist/lib/util/constants.d.ts +1 -0
  618. package/dist/lib/util/constants.d.ts.map +1 -1
  619. package/dist/lib/util/constants.js +2 -1
  620. package/dist/lib/util/constants.js.map +1 -1
  621. package/dist/lib/util/extract-user.d.ts +6 -6
  622. package/dist/lib/util/extract-user.d.ts.map +1 -1
  623. package/dist/lib/util/extract-user.js +3 -1
  624. package/dist/lib/util/extract-user.js.map +1 -1
  625. package/dist/lib/util/flag-resolver.js +1 -1
  626. package/dist/lib/util/flag-resolver.js.map +1 -1
  627. package/dist/lib/util/flag-resolver.test.js +34 -0
  628. package/dist/lib/util/flag-resolver.test.js.map +1 -1
  629. package/dist/lib/util/index.d.ts +1 -1
  630. package/dist/lib/util/index.d.ts.map +1 -1
  631. package/dist/lib/util/index.js +1 -1
  632. package/dist/lib/util/index.js.map +1 -1
  633. package/dist/lib/util/metrics/createCounter.d.ts +15 -0
  634. package/dist/lib/util/metrics/createCounter.d.ts.map +1 -0
  635. package/dist/lib/util/metrics/createCounter.js +48 -0
  636. package/dist/lib/util/metrics/createCounter.js.map +1 -0
  637. package/dist/lib/util/metrics/createGauge.d.ts +15 -0
  638. package/dist/lib/util/metrics/createGauge.d.ts.map +1 -0
  639. package/dist/lib/util/metrics/createGauge.js +45 -0
  640. package/dist/lib/util/metrics/createGauge.js.map +1 -0
  641. package/dist/lib/util/metrics/createSummary.d.ts +14 -0
  642. package/dist/lib/util/metrics/createSummary.d.ts.map +1 -0
  643. package/dist/lib/util/metrics/createSummary.js +39 -0
  644. package/dist/lib/util/metrics/createSummary.js.map +1 -0
  645. package/dist/lib/util/metrics/index.d.ts +4 -0
  646. package/dist/lib/util/metrics/index.d.ts.map +1 -0
  647. package/dist/lib/util/metrics/index.js +20 -0
  648. package/dist/lib/util/metrics/index.js.map +1 -0
  649. package/dist/lib/util/omit-keys.d.ts.map +1 -1
  650. package/dist/lib/util/omit-keys.js.map +1 -1
  651. package/dist/lib/util/time-utils.d.ts +1 -0
  652. package/dist/lib/util/time-utils.d.ts.map +1 -1
  653. package/dist/lib/util/time-utils.js +11 -1
  654. package/dist/lib/util/time-utils.js.map +1 -1
  655. package/dist/lib/util/time-utils.test.js +7 -0
  656. package/dist/lib/util/time-utils.test.js.map +1 -1
  657. package/dist/lib/util/timer.test.js.map +1 -1
  658. package/dist/mailtemplates/scheduled-change-conflict/scheduled-change-conflict.html.mustache +91 -206
  659. package/dist/mailtemplates/scheduled-change-conflict/scheduled-change-conflict.plain.mustache +4 -0
  660. package/dist/mailtemplates/scheduled-execution-failed/scheduled-execution-failed.html.mustache +83 -202
  661. package/dist/mailtemplates/scheduled-execution-failed/scheduled-execution-failed.plain.mustache +0 -1
  662. package/dist/migrations/20240108151652-add-daily-metrics.d.ts +3 -0
  663. package/dist/migrations/20240108151652-add-daily-metrics.d.ts.map +1 -0
  664. package/dist/migrations/20240108151652-add-daily-metrics.js +40 -0
  665. package/dist/migrations/20240108151652-add-daily-metrics.js.map +1 -0
  666. package/dist/migrations/20240109093021-incoming-webhooks-description.d.ts +3 -0
  667. package/dist/migrations/20240109093021-incoming-webhooks-description.d.ts.map +1 -0
  668. package/dist/migrations/20240109093021-incoming-webhooks-description.js +10 -0
  669. package/dist/migrations/20240109093021-incoming-webhooks-description.js.map +1 -0
  670. package/dist/migrations/20240109095348-add-reason-column-to-schedule.d.ts +3 -0
  671. package/dist/migrations/20240109095348-add-reason-column-to-schedule.d.ts.map +1 -0
  672. package/dist/migrations/20240109095348-add-reason-column-to-schedule.js +9 -0
  673. package/dist/migrations/20240109095348-add-reason-column-to-schedule.js.map +1 -0
  674. package/dist/migrations/20240111075911-update-system-user-email.d.ts +3 -0
  675. package/dist/migrations/20240111075911-update-system-user-email.d.ts.map +1 -0
  676. package/dist/migrations/20240111075911-update-system-user-email.js +8 -0
  677. package/dist/migrations/20240111075911-update-system-user-email.js.map +1 -0
  678. package/dist/migrations/20240111125100-automated-actions.d.ts +3 -0
  679. package/dist/migrations/20240111125100-automated-actions.d.ts.map +1 -0
  680. package/dist/migrations/20240111125100-automated-actions.js +39 -0
  681. package/dist/migrations/20240111125100-automated-actions.js.map +1 -0
  682. package/dist/migrations/20240116104456-drop-unused-column-permissionid.d.ts +3 -0
  683. package/dist/migrations/20240116104456-drop-unused-column-permissionid.d.ts.map +1 -0
  684. package/dist/migrations/20240116104456-drop-unused-column-permissionid.js +14 -0
  685. package/dist/migrations/20240116104456-drop-unused-column-permissionid.js.map +1 -0
  686. package/dist/migrations/20240116154700-unleash-admin-token-user.d.ts +3 -0
  687. package/dist/migrations/20240116154700-unleash-admin-token-user.d.ts.map +1 -0
  688. package/dist/migrations/20240116154700-unleash-admin-token-user.js +15 -0
  689. package/dist/migrations/20240116154700-unleash-admin-token-user.js.map +1 -0
  690. package/dist/migrations/20240117093601-add-more-granular-project-permissions.d.ts +3 -0
  691. package/dist/migrations/20240117093601-add-more-granular-project-permissions.d.ts.map +1 -0
  692. package/dist/migrations/20240117093601-add-more-granular-project-permissions.js +27 -0
  693. package/dist/migrations/20240117093601-add-more-granular-project-permissions.js.map +1 -0
  694. package/dist/migrations/20240118093611-missing-primary-keys.d.ts +3 -0
  695. package/dist/migrations/20240118093611-missing-primary-keys.d.ts.map +1 -0
  696. package/dist/migrations/20240118093611-missing-primary-keys.js +17 -0
  697. package/dist/migrations/20240118093611-missing-primary-keys.js.map +1 -0
  698. package/dist/migrations/20240119171200-action-states.d.ts +3 -0
  699. package/dist/migrations/20240119171200-action-states.d.ts.map +1 -0
  700. package/dist/migrations/20240119171200-action-states.js +23 -0
  701. package/dist/migrations/20240119171200-action-states.js.map +1 -0
  702. package/dist/migrations/20240124123000-add-enabled-to-action-sets.d.ts +3 -0
  703. package/dist/migrations/20240124123000-add-enabled-to-action-sets.d.ts.map +1 -0
  704. package/dist/migrations/20240124123000-add-enabled-to-action-sets.js +12 -0
  705. package/dist/migrations/20240124123000-add-enabled-to-action-sets.js.map +1 -0
  706. package/dist/migrations/20240125084701-add-user-trends.d.ts +3 -0
  707. package/dist/migrations/20240125084701-add-user-trends.d.ts.map +1 -0
  708. package/dist/migrations/20240125084701-add-user-trends.js +14 -0
  709. package/dist/migrations/20240125084701-add-user-trends.js.map +1 -0
  710. package/dist/migrations/20240125085703-users-table-increae-image-url-size.d.ts +3 -0
  711. package/dist/migrations/20240125085703-users-table-increae-image-url-size.d.ts.map +1 -0
  712. package/dist/migrations/20240125085703-users-table-increae-image-url-size.js +14 -0
  713. package/dist/migrations/20240125085703-users-table-increae-image-url-size.js.map +1 -0
  714. package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.d.ts +3 -0
  715. package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.d.ts.map +1 -0
  716. package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.js +18 -0
  717. package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.js.map +1 -0
  718. package/dist/migrations/20240125100000-events-system-user-old2new.d.ts +3 -0
  719. package/dist/migrations/20240125100000-events-system-user-old2new.d.ts.map +1 -0
  720. package/dist/migrations/20240125100000-events-system-user-old2new.js +10 -0
  721. package/dist/migrations/20240125100000-events-system-user-old2new.js.map +1 -0
  722. package/dist/migrations/20240126095544-add-flag-trends.d.ts +3 -0
  723. package/dist/migrations/20240126095544-add-flag-trends.d.ts.map +1 -0
  724. package/dist/migrations/20240126095544-add-flag-trends.js +17 -0
  725. package/dist/migrations/20240126095544-add-flag-trends.js.map +1 -0
  726. package/dist/migrations/20240130104757-flag-trends-health-time-to-production.d.ts +3 -0
  727. package/dist/migrations/20240130104757-flag-trends-health-time-to-production.d.ts.map +1 -0
  728. package/dist/migrations/20240130104757-flag-trends-health-time-to-production.js +14 -0
  729. package/dist/migrations/20240130104757-flag-trends-health-time-to-production.js.map +1 -0
  730. package/dist/migrator.js +1 -1
  731. package/dist/migrator.js.map +1 -1
  732. package/dist/server-dev.js +2 -3
  733. package/dist/server-dev.js.map +1 -1
  734. package/dist/test/arbitraries.test.d.ts +2 -2
  735. package/dist/test/arbitraries.test.d.ts.map +1 -1
  736. package/dist/test/config/test-config.d.ts.map +1 -1
  737. package/dist/test/config/test-config.js +1 -0
  738. package/dist/test/config/test-config.js.map +1 -1
  739. package/dist/test/e2e/api/admin/addon.e2e.test.js +1 -1
  740. package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
  741. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +102 -0
  742. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  743. package/dist/test/e2e/api/admin/api-token.e2e.test.js +6 -0
  744. package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
  745. package/dist/test/e2e/api/admin/constraints.e2e.test.js.map +1 -1
  746. package/dist/test/e2e/api/admin/context.e2e.test.js.map +1 -1
  747. package/dist/test/e2e/api/admin/event.e2e.test.js +5 -1
  748. package/dist/test/e2e/api/admin/event.e2e.test.js.map +1 -1
  749. package/dist/test/e2e/api/admin/favorites.e2e.test.js.map +1 -1
  750. package/dist/test/e2e/api/admin/feature-type.test.js.map +1 -1
  751. package/dist/test/e2e/api/admin/feature.auth.e2e.test.js.map +1 -1
  752. package/dist/test/e2e/api/admin/feature.custom-auth.e2e.test.js.map +1 -1
  753. package/dist/test/e2e/api/admin/feedback.e2e.test.js.map +1 -1
  754. package/dist/test/e2e/api/admin/instance-admin.e2e.test.js +10 -4
  755. package/dist/test/e2e/api/admin/instance-admin.e2e.test.js.map +1 -1
  756. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js.map +1 -1
  757. package/dist/test/e2e/api/admin/project/project.health.e2e.test.js.map +1 -1
  758. package/dist/test/e2e/api/admin/public-signup-token.e2e.test.js +3 -7
  759. package/dist/test/e2e/api/admin/public-signup-token.e2e.test.js.map +1 -1
  760. package/dist/test/e2e/api/admin/segment.e2e.test.js +2 -5
  761. package/dist/test/e2e/api/admin/segment.e2e.test.js.map +1 -1
  762. package/dist/test/e2e/api/admin/splash.e2e.test.js.map +1 -1
  763. package/dist/test/e2e/api/admin/strategy.e2e.test.js.map +1 -1
  764. package/dist/test/e2e/api/admin/tags.e2e.test.js +1 -1
  765. package/dist/test/e2e/api/admin/tags.e2e.test.js.map +1 -1
  766. package/dist/test/e2e/api/admin/user/pat.e2e.test.js +1 -1
  767. package/dist/test/e2e/api/admin/user/pat.e2e.test.js.map +1 -1
  768. package/dist/test/e2e/api/admin/user/user.test.js.map +1 -1
  769. package/dist/test/e2e/api/admin/user-admin.e2e.test.js +1 -1
  770. package/dist/test/e2e/api/admin/user-admin.e2e.test.js.map +1 -1
  771. package/dist/test/e2e/api/auth/reset-password-controller.e2e.test.js +1 -1
  772. package/dist/test/e2e/api/auth/reset-password-controller.e2e.test.js.map +1 -1
  773. package/dist/test/e2e/api/auth/simple-password-provider.e2e.test.js.map +1 -1
  774. package/dist/test/e2e/api/client/metrics.e2e.test.js.map +1 -1
  775. package/dist/test/e2e/api/client/metricsV2.e2e.test.js +7 -6
  776. package/dist/test/e2e/api/client/metricsV2.e2e.test.js.map +1 -1
  777. package/dist/test/e2e/api/client/register.e2e.test.js +1 -0
  778. package/dist/test/e2e/api/client/register.e2e.test.js.map +1 -1
  779. package/dist/test/e2e/api/client/segment.e2e.test.js +1 -3
  780. package/dist/test/e2e/api/client/segment.e2e.test.js.map +1 -1
  781. package/dist/test/e2e/api/openapi/openapi.e2e.test.js.map +1 -1
  782. package/dist/test/e2e/api/proxy/proxy.e2e.test.js +84 -14
  783. package/dist/test/e2e/api/proxy/proxy.e2e.test.js.map +1 -1
  784. package/dist/test/e2e/custom-auth.test.js.map +1 -1
  785. package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.d.ts +2 -0
  786. package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.d.ts.map +1 -0
  787. package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.js +223 -0
  788. package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.js.map +1 -0
  789. package/dist/test/e2e/health.e2e.test.js.map +1 -1
  790. package/dist/test/e2e/helpers/app.utils.d.ts +1 -1
  791. package/dist/test/e2e/helpers/app.utils.d.ts.map +1 -1
  792. package/dist/test/e2e/helpers/database-init.d.ts +1 -1
  793. package/dist/test/e2e/helpers/database-init.d.ts.map +1 -1
  794. package/dist/test/e2e/helpers/database-init.js +2 -0
  795. package/dist/test/e2e/helpers/database-init.js.map +1 -1
  796. package/dist/test/e2e/helpers/test-helper.d.ts +4 -2
  797. package/dist/test/e2e/helpers/test-helper.d.ts.map +1 -1
  798. package/dist/test/e2e/helpers/test-helper.js.map +1 -1
  799. package/dist/test/e2e/migrator.e2e.test.js +27 -1
  800. package/dist/test/e2e/migrator.e2e.test.js.map +1 -1
  801. package/dist/test/e2e/routes/routes.test.js.map +1 -1
  802. package/dist/test/e2e/services/access-service.e2e.test.js +26 -8
  803. package/dist/test/e2e/services/access-service.e2e.test.js.map +1 -1
  804. package/dist/test/e2e/services/addon-service.e2e.test.js.map +1 -1
  805. package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
  806. package/dist/test/e2e/services/group-service.e2e.test.js.map +1 -1
  807. package/dist/test/e2e/services/playground-service.test.d.ts +2 -2
  808. package/dist/test/e2e/services/playground-service.test.d.ts.map +1 -1
  809. package/dist/test/e2e/services/playground-service.test.js +7 -6
  810. package/dist/test/e2e/services/playground-service.test.js.map +1 -1
  811. package/dist/test/e2e/services/project-health-service.e2e.test.js +0 -5
  812. package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
  813. package/dist/test/e2e/services/reset-token-service.e2e.test.js +6 -6
  814. package/dist/test/e2e/services/reset-token-service.e2e.test.js.map +1 -1
  815. package/dist/test/e2e/services/session-service.e2e.test.js.map +1 -1
  816. package/dist/test/e2e/services/setting-service.test.js.map +1 -1
  817. package/dist/test/e2e/services/state-service.e2e.test.js +9 -7
  818. package/dist/test/e2e/services/state-service.e2e.test.js.map +1 -1
  819. package/dist/test/e2e/services/user-service.e2e.test.js +48 -1
  820. package/dist/test/e2e/services/user-service.e2e.test.js.map +1 -1
  821. package/dist/test/e2e/stores/client-application-store.e2e.test.js +6 -2
  822. package/dist/test/e2e/stores/client-application-store.e2e.test.js.map +1 -1
  823. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  824. package/dist/test/e2e/stores/feature-environment-store.e2e.test.js +76 -0
  825. package/dist/test/e2e/stores/feature-environment-store.e2e.test.js.map +1 -1
  826. package/dist/test/e2e/stores/feature-tag-store.e2e.test.js.map +1 -1
  827. package/dist/test/e2e/stores/feature-toggle-client-store.e2e.test.js +1 -1
  828. package/dist/test/e2e/stores/feature-toggle-client-store.e2e.test.js.map +1 -1
  829. package/dist/test/e2e/stores/feature-type-store.e2e.test.js.map +1 -1
  830. package/dist/test/e2e/stores/project-store.e2e.test.js.map +1 -1
  831. package/dist/test/e2e/stores/setting-store.e2e.test.js.map +1 -1
  832. package/dist/test/e2e/stores/user-feedback-store.e2e.test.js.map +1 -1
  833. package/dist/test/e2e/stores/user-splash-store.e2e.test.js.map +1 -1
  834. package/dist/test/e2e/stores/user-store.e2e.test.js +4 -3
  835. package/dist/test/e2e/stores/user-store.e2e.test.js.map +1 -1
  836. package/dist/test/e2e/system-user-migration.test.js +1 -1
  837. package/dist/test/fixtures/fake-access-store.d.ts +1 -1
  838. package/dist/test/fixtures/fake-access-store.d.ts.map +1 -1
  839. package/dist/test/fixtures/fake-access-store.js.map +1 -1
  840. package/dist/test/fixtures/fake-client-instance-store.d.ts +1 -0
  841. package/dist/test/fixtures/fake-client-instance-store.d.ts.map +1 -1
  842. package/dist/test/fixtures/fake-client-instance-store.js +3 -0
  843. package/dist/test/fixtures/fake-client-instance-store.js.map +1 -1
  844. package/dist/test/fixtures/fake-event-store.d.ts +2 -1
  845. package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
  846. package/dist/test/fixtures/fake-event-store.js +3 -0
  847. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  848. package/dist/test/fixtures/fake-favorite-features-store.d.ts.map +1 -1
  849. package/dist/test/fixtures/fake-favorite-features-store.js.map +1 -1
  850. package/dist/test/fixtures/fake-favorite-projects-store.d.ts.map +1 -1
  851. package/dist/test/fixtures/fake-favorite-projects-store.js.map +1 -1
  852. package/dist/test/fixtures/fake-project-stats-store.d.ts +2 -2
  853. package/dist/test/fixtures/fake-project-stats-store.d.ts.map +1 -1
  854. package/dist/test/fixtures/fake-project-store.d.ts +1 -1
  855. package/dist/test/fixtures/fake-project-store.d.ts.map +1 -1
  856. package/dist/test/fixtures/fake-project-store.js +8 -1
  857. package/dist/test/fixtures/fake-project-store.js.map +1 -1
  858. package/dist/test/fixtures/fake-role-store.d.ts +4 -4
  859. package/dist/test/fixtures/fake-role-store.d.ts.map +1 -1
  860. package/dist/test/fixtures/fake-strategies-store.js +1 -1
  861. package/dist/test/fixtures/fake-strategies-store.js.map +1 -1
  862. package/dist/test/fixtures/store.js +2 -2
  863. package/dist/test/fixtures/store.js.map +1 -1
  864. package/frontend/build/index.html +2 -2
  865. package/frontend/build/static/AdvancedPlayground-DoQ1u8B6.js +4 -0
  866. package/frontend/build/static/{CreateProject-aN-UGdcb.js → CreateProject-iLBz5afO.js} +2 -2
  867. package/frontend/build/static/{FeatureArchiveDialog-eHyhx7Yo.js → FeatureArchiveDialog-NSAcrt7Z.js} +2 -2
  868. package/frontend/build/static/FeatureMetricsChart-UhDepK_o.js +2 -0
  869. package/frontend/build/static/FeatureViewLazyExport-SpKYIb_J.js +25 -0
  870. package/frontend/build/static/LazyAdminExport-w5iLam_A.js +44 -0
  871. package/frontend/build/static/LazyProjectExport-iqGbEmyw.js +27 -0
  872. package/frontend/build/static/LineChartComponent-rG1KLVNr.js +1 -0
  873. package/frontend/build/static/NetworkOverview-7SCGp57r.js +1304 -0
  874. package/frontend/build/static/NetworkTraffic-awTd8Zg5.js +1 -0
  875. package/frontend/build/static/ReactJSONEditor-N-DWXE0h.js +106 -0
  876. package/frontend/build/static/RoleCell-mJ7DV61l.js +1 -0
  877. package/frontend/build/static/{StrategyItemContainer-JoMPKX3L.js → StrategyItemContainer-wxQbaPXr.js} +1 -1
  878. package/frontend/build/static/changeRequestProcessWithSchedule-ZryCFkCp.svg +1 -0
  879. package/frontend/build/static/{flowchart-elk-definition-170a3958-NkZoK_zv.js → flowchart-elk-definition-170a3958-fa48ti80.js} +2 -2
  880. package/frontend/build/static/index-TzAeUmk4.js +10 -0
  881. package/frontend/build/static/index-p2PlVFLf.js +524 -0
  882. package/frontend/build/static/index-pAMHRYpv.js +1 -0
  883. package/frontend/build/static/is_dark-aAyqOy_I.js +1 -0
  884. package/frontend/build/static/{mindmap-definition-44684416-obuYUG0L.js → mindmap-definition-44684416-AfCKDD9v.js} +2 -2
  885. package/frontend/build/static/{style-gSb9cHBe.css → style-4Ai58kIl.css} +1 -1
  886. package/frontend/build/static/{timeline-definition-8e5a9bc6-33WsNwwr.js → timeline-definition-8e5a9bc6-NKNlIEgm.js} +2 -2
  887. package/frontend/build/static/uniqueId-ebLYlRiD.js +1 -0
  888. package/frontend/build/static/{unknownify-YD2Teyht.js → unknownify-g-QgUElr.js} +1 -1
  889. package/frontend/build/static/{useApiTokens-XTOY616x.js → useApiTokens-hvnEZWgJ.js} +1 -1
  890. package/frontend/build/static/{useProjectForm--jxh4Dtm.js → useProjectForm-zqz6LJw4.js} +1 -1
  891. package/frontend/build/static/vanilla-picker-P0dws0ou.js +8 -0
  892. package/frontend/package.json +32 -23
  893. package/package.json +10 -10
  894. package/dist/lib/db/client-metrics-store-v2.d.ts.map +0 -1
  895. package/dist/lib/db/client-metrics-store-v2.js +0 -173
  896. package/dist/lib/db/client-metrics-store-v2.js.map +0 -1
  897. package/dist/lib/db/event-store.test.d.ts.map +0 -1
  898. package/dist/lib/db/event-store.test.js.map +0 -1
  899. package/dist/lib/routes/admin-api/client-metrics.d.ts.map +0 -1
  900. package/dist/lib/routes/client-api/metrics.d.ts.map +0 -1
  901. package/dist/lib/routes/client-api/metrics.js.map +0 -1
  902. package/dist/lib/routes/client-api/metrics.test.d.ts.map +0 -1
  903. package/dist/lib/routes/client-api/metrics.test.js.map +0 -1
  904. package/dist/lib/routes/client-api/register.d.ts.map +0 -1
  905. package/dist/lib/routes/client-api/register.js.map +0 -1
  906. package/dist/lib/routes/client-api/register.test.d.ts.map +0 -1
  907. package/dist/lib/routes/client-api/register.test.js.map +0 -1
  908. package/dist/lib/services/client-metrics/instance-service.d.ts.map +0 -1
  909. package/dist/lib/services/client-metrics/instance-service.js.map +0 -1
  910. package/dist/lib/services/client-metrics/instance-service.test.d.ts.map +0 -1
  911. package/dist/lib/services/client-metrics/instance-service.test.js.map +0 -1
  912. package/dist/lib/services/client-metrics/last-seen/createLastSeenService.d.ts.map +0 -1
  913. package/dist/lib/services/client-metrics/last-seen/createLastSeenService.js.map +0 -1
  914. package/dist/lib/services/client-metrics/last-seen/fake-last-seen-read-model.d.ts.map +0 -1
  915. package/dist/lib/services/client-metrics/last-seen/fake-last-seen-read-model.js.map +0 -1
  916. package/dist/lib/services/client-metrics/last-seen/fake-last-seen-store.d.ts.map +0 -1
  917. package/dist/lib/services/client-metrics/last-seen/fake-last-seen-store.js.map +0 -1
  918. package/dist/lib/services/client-metrics/last-seen/last-seen-read-model.d.ts.map +0 -1
  919. package/dist/lib/services/client-metrics/last-seen/last-seen-read-model.js.map +0 -1
  920. package/dist/lib/services/client-metrics/last-seen/last-seen-service.d.ts.map +0 -1
  921. package/dist/lib/services/client-metrics/last-seen/last-seen-service.js.map +0 -1
  922. package/dist/lib/services/client-metrics/last-seen/last-seen-store.d.ts.map +0 -1
  923. package/dist/lib/services/client-metrics/last-seen/last-seen-store.js.map +0 -1
  924. package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.e2e.test.d.ts.map +0 -1
  925. package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.e2e.test.js.map +0 -1
  926. package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.test.d.ts.map +0 -1
  927. package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.test.js.map +0 -1
  928. package/dist/lib/services/client-metrics/last-seen/types/last-seen-read-model-type.d.ts.map +0 -1
  929. package/dist/lib/services/client-metrics/last-seen/types/last-seen-read-model-type.js.map +0 -1
  930. package/dist/lib/services/client-metrics/last-seen/types/last-seen-store-type.d.ts.map +0 -1
  931. package/dist/lib/services/client-metrics/last-seen/types/last-seen-store-type.js.map +0 -1
  932. package/dist/lib/services/client-metrics/metrics-service-v2.d.ts.map +0 -1
  933. package/dist/lib/services/client-metrics/metrics-service-v2.js.map +0 -1
  934. package/dist/lib/services/client-metrics/metrics-service-v2.test.d.ts.map +0 -1
  935. package/dist/lib/services/client-metrics/metrics-service-v2.test.js +0 -99
  936. package/dist/lib/services/client-metrics/metrics-service-v2.test.js.map +0 -1
  937. package/dist/lib/services/client-metrics/models.d.ts.map +0 -1
  938. package/dist/lib/services/client-metrics/models.js.map +0 -1
  939. package/dist/lib/services/client-metrics/schema.d.ts.map +0 -1
  940. package/dist/lib/services/client-metrics/schema.js.map +0 -1
  941. package/dist/lib/services/client-metrics/schema.test.d.ts.map +0 -1
  942. package/dist/lib/services/client-metrics/schema.test.js.map +0 -1
  943. package/dist/lib/types/stores/client-metrics-store-v2.d.ts.map +0 -1
  944. package/dist/lib/types/stores/client-metrics-store-v2.js.map +0 -1
  945. package/dist/lib/util/collapseHourlyMetrics.d.ts.map +0 -1
  946. package/dist/lib/util/collapseHourlyMetrics.js.map +0 -1
  947. package/dist/lib/util/collapseHourlyMetrics.test.d.ts.map +0 -1
  948. package/dist/lib/util/collapseHourlyMetrics.test.js.map +0 -1
  949. package/dist/test/e2e/api/admin/client-metrics.e2e.test.d.ts.map +0 -1
  950. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +0 -1
  951. package/dist/test/e2e/services/client-metrics-service.e2e.test.d.ts.map +0 -1
  952. package/dist/test/e2e/services/client-metrics-service.e2e.test.js.map +0 -1
  953. package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.d.ts.map +0 -1
  954. package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.js.map +0 -1
  955. package/dist/test/fixtures/fake-client-metrics-store-v2.d.ts.map +0 -1
  956. package/dist/test/fixtures/fake-client-metrics-store-v2.js.map +0 -1
  957. package/frontend/build/static/AdvancedPlayground-FxfPUa2V.js +0 -13
  958. package/frontend/build/static/FeatureMetricsChart-ExGq1eXl.js +0 -2
  959. package/frontend/build/static/FeatureViewLazyExport-S8mj8m0z.js +0 -25
  960. package/frontend/build/static/LazyAdminExport-fpVZFnP9.js +0 -44
  961. package/frontend/build/static/LazyProjectExport-_QSE5C5m.js +0 -25
  962. package/frontend/build/static/NetworkOverview-ylTzmeDg.js +0 -1304
  963. package/frontend/build/static/NetworkTraffic-qj5h7JRk.js +0 -1
  964. package/frontend/build/static/ReactJSONEditor-E59dRBYR.js +0 -129
  965. package/frontend/build/static/RoleCell-TGTVkKHO.js +0 -1
  966. package/frontend/build/static/chartjs-adapter-date-fns.esm-JSlDxtwH.js +0 -23
  967. package/frontend/build/static/index-JVRlSBvr.js +0 -501
  968. package/frontend/build/static/is_dark-gjUQW15t.js +0 -1
  969. /package/dist/lib/{db → features/events}/event-store.test.d.ts +0 -0
  970. /package/dist/{test/e2e/services → lib/features/metrics/client-metrics}/client-metrics-service.e2e.test.d.ts +0 -0
  971. /package/dist/{test/e2e/stores → lib/features/metrics/client-metrics}/client-metrics-store-v2.e2e.test.d.ts +0 -0
  972. /package/dist/{test/e2e/api/admin → lib/features/metrics/client-metrics}/client-metrics.e2e.test.d.ts +0 -0
  973. /package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.js +0 -0
  974. /package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.test.d.ts +0 -0
  975. /package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.test.js +0 -0
  976. /package/dist/lib/{services → features/metrics}/client-metrics/metrics-service-v2.test.d.ts +0 -0
  977. /package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.test.d.ts +0 -0
  978. /package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.test.d.ts +0 -0
  979. /package/dist/lib/{services/client-metrics → features/metrics/instance}/models.js +0 -0
  980. /package/dist/lib/{routes/client-api → features/metrics/instance}/register.test.d.ts +0 -0
  981. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/createLastSeenService.d.ts +0 -0
  982. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-read-model.d.ts +0 -0
  983. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-read-model.js +0 -0
  984. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-store.d.ts +0 -0
  985. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-store.js +0 -0
  986. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-read-model.d.ts +0 -0
  987. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-read-model.js +0 -0
  988. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-service.js +0 -0
  989. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-store.d.ts +0 -0
  990. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.e2e.test.d.ts +0 -0
  991. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.e2e.test.js +0 -0
  992. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.test.d.ts +0 -0
  993. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.test.js +0 -0
  994. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-read-model-type.d.ts +0 -0
  995. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-read-model-type.js +0 -0
  996. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-store-type.d.ts +0 -0
  997. /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-store-type.js +0 -0
  998. /package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.js +0 -0
  999. /package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.test.d.ts +0 -0
  1000. /package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.test.js +0 -0
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ClientMetricsStoreV2 = void 0;
7
+ const notfound_error_1 = __importDefault(require("../../../error/notfound-error"));
8
+ const date_fns_1 = require("date-fns");
9
+ const collapseHourlyMetrics_1 = require("./collapseHourlyMetrics");
10
+ const HOURLY_TABLE = 'client_metrics_env';
11
+ const DAILY_TABLE = 'client_metrics_env_daily';
12
+ const HOURLY_TABLE_VARIANTS = 'client_metrics_env_variants';
13
+ const DAILY_TABLE_VARIANTS = 'client_metrics_env_variants_daily';
14
+ const fromRow = (row) => ({
15
+ featureName: row.feature_name,
16
+ appName: row.app_name,
17
+ environment: row.environment,
18
+ timestamp: row.timestamp,
19
+ yes: Number(row.yes),
20
+ no: Number(row.no),
21
+ });
22
+ const toRow = (metric) => ({
23
+ feature_name: metric.featureName,
24
+ app_name: metric.appName,
25
+ environment: metric.environment,
26
+ timestamp: (0, date_fns_1.startOfHour)(metric.timestamp),
27
+ yes: metric.yes,
28
+ no: metric.no,
29
+ });
30
+ const toVariantRow = (metric) => ({
31
+ feature_name: metric.featureName,
32
+ app_name: metric.appName,
33
+ environment: metric.environment,
34
+ timestamp: (0, date_fns_1.startOfHour)(metric.timestamp),
35
+ variant: metric.variant,
36
+ count: metric.count,
37
+ });
38
+ const variantRowReducer = (acc, tokenRow) => {
39
+ const { feature_name: featureName, app_name: appName, environment, timestamp, yes, no, variant, count, } = tokenRow;
40
+ const key = `${featureName}_${appName}_${environment}_${timestamp}_${yes}_${no}`;
41
+ if (!acc[key]) {
42
+ acc[key] = {
43
+ featureName,
44
+ appName,
45
+ environment,
46
+ timestamp,
47
+ yes: Number(yes),
48
+ no: Number(no),
49
+ variants: {},
50
+ };
51
+ }
52
+ if (variant) {
53
+ acc[key].variants[variant] = count;
54
+ }
55
+ return acc;
56
+ };
57
+ const variantRowReducerV2 = (acc, tokenRow) => {
58
+ const { feature_name: featureName, app_name: appName, environment, timestamp, date, yes, no, variant, count, } = tokenRow;
59
+ const key = `${featureName}_${appName}_${environment}_${timestamp || date}_${yes}_${no}`;
60
+ if (!acc[key]) {
61
+ acc[key] = {
62
+ featureName,
63
+ appName,
64
+ environment,
65
+ timestamp: timestamp || (0, date_fns_1.endOfDay)(date),
66
+ yes: Number(yes),
67
+ no: Number(no),
68
+ variants: {},
69
+ };
70
+ }
71
+ if (variant) {
72
+ acc[key].variants[variant] = count;
73
+ }
74
+ return acc;
75
+ };
76
+ class ClientMetricsStoreV2 {
77
+ constructor(db, getLogger, flagResolver) {
78
+ this.db = db;
79
+ this.logger = getLogger('client-metrics-store-v2.js');
80
+ this.flagResolver = flagResolver;
81
+ }
82
+ async get(key) {
83
+ const row = await this.db(HOURLY_TABLE)
84
+ .where({
85
+ feature_name: key.featureName,
86
+ app_name: key.appName,
87
+ environment: key.environment,
88
+ timestamp: (0, date_fns_1.startOfHour)(key.timestamp),
89
+ })
90
+ .first();
91
+ if (row) {
92
+ return fromRow(row);
93
+ }
94
+ throw new notfound_error_1.default(`Could not find metric`);
95
+ }
96
+ async getAll(query = {}) {
97
+ const rows = await this.db(HOURLY_TABLE)
98
+ .select('*')
99
+ .where(query);
100
+ return rows.map(fromRow);
101
+ }
102
+ async exists(key) {
103
+ try {
104
+ await this.get(key);
105
+ return true;
106
+ }
107
+ catch (e) {
108
+ return false;
109
+ }
110
+ }
111
+ async delete(key) {
112
+ return this.db(HOURLY_TABLE)
113
+ .where({
114
+ feature_name: key.featureName,
115
+ app_name: key.appName,
116
+ environment: key.environment,
117
+ timestamp: (0, date_fns_1.startOfHour)(key.timestamp),
118
+ })
119
+ .del();
120
+ }
121
+ deleteAll() {
122
+ return this.db(HOURLY_TABLE).del();
123
+ }
124
+ destroy() {
125
+ // Nothing to do!
126
+ }
127
+ // this function will collapse metrics before sending it to the database.
128
+ async batchInsertMetrics(metrics) {
129
+ if (!metrics || metrics.length === 0) {
130
+ return;
131
+ }
132
+ const rows = (0, collapseHourlyMetrics_1.collapseHourlyMetrics)(metrics).map(toRow);
133
+ // Sort the rows to avoid deadlocks
134
+ const sortedRows = rows.sort((a, b) => a.feature_name.localeCompare(b.feature_name) ||
135
+ a.app_name.localeCompare(b.app_name) ||
136
+ a.environment.localeCompare(b.environment));
137
+ // Consider rewriting to SQL batch!
138
+ const insert = this.db(HOURLY_TABLE)
139
+ .insert(sortedRows)
140
+ .toQuery();
141
+ const query = `${insert.toString()} ON CONFLICT (feature_name, app_name, environment, timestamp) DO UPDATE SET "yes" = "client_metrics_env"."yes" + EXCLUDED.yes, "no" = "client_metrics_env"."no" + EXCLUDED.no`;
142
+ await this.db.raw(query);
143
+ const variantRows = (0, collapseHourlyMetrics_1.spreadVariants)(metrics).map(toVariantRow);
144
+ // Sort the rows to avoid deadlocks
145
+ const sortedVariantRows = variantRows.sort((a, b) => a.feature_name.localeCompare(b.feature_name) ||
146
+ a.app_name.localeCompare(b.app_name) ||
147
+ a.environment.localeCompare(b.environment) ||
148
+ a.variant.localeCompare(b.variant));
149
+ if (sortedVariantRows.length > 0) {
150
+ const insertVariants = this.db(HOURLY_TABLE_VARIANTS)
151
+ .insert(sortedVariantRows)
152
+ .toQuery();
153
+ const variantsQuery = `${insertVariants.toString()} ON CONFLICT (feature_name, app_name, environment, timestamp, variant) DO UPDATE SET "count" = "client_metrics_env_variants"."count" + EXCLUDED.count`;
154
+ await this.db.raw(variantsQuery);
155
+ }
156
+ }
157
+ async getMetricsForFeatureToggle(featureName, hoursBack = 24) {
158
+ const rows = await this.db(HOURLY_TABLE)
159
+ .select([`${HOURLY_TABLE}.*`, 'variant', 'count'])
160
+ .leftJoin(HOURLY_TABLE_VARIANTS, function () {
161
+ this.on(`${HOURLY_TABLE_VARIANTS}.feature_name`, `${HOURLY_TABLE}.feature_name`)
162
+ .on(`${HOURLY_TABLE_VARIANTS}.app_name`, `${HOURLY_TABLE}.app_name`)
163
+ .on(`${HOURLY_TABLE_VARIANTS}.environment`, `${HOURLY_TABLE}.environment`)
164
+ .on(`${HOURLY_TABLE_VARIANTS}.timestamp`, `${HOURLY_TABLE}.timestamp`);
165
+ })
166
+ .where(`${HOURLY_TABLE}.feature_name`, featureName)
167
+ .andWhereRaw(`${HOURLY_TABLE}.timestamp >= NOW() - INTERVAL '${hoursBack} hours'`);
168
+ const tokens = rows.reduce(variantRowReducer, {});
169
+ return Object.values(tokens);
170
+ }
171
+ async getMetricsForFeatureToggleV2(featureName, hoursBack = 24) {
172
+ const mainTable = hoursBack <= 48 ? HOURLY_TABLE : DAILY_TABLE;
173
+ const variantsTable = hoursBack <= 48 ? HOURLY_TABLE_VARIANTS : DAILY_TABLE_VARIANTS;
174
+ const dateTime = hoursBack <= 48 ? 'timestamp' : 'date';
175
+ const rows = await this.db(mainTable)
176
+ .select([`${mainTable}.*`, 'variant', 'count'])
177
+ .leftJoin(variantsTable, function () {
178
+ this.on(`${variantsTable}.feature_name`, `${mainTable}.feature_name`)
179
+ .on(`${variantsTable}.app_name`, `${mainTable}.app_name`)
180
+ .on(`${variantsTable}.environment`, `${mainTable}.environment`)
181
+ .on(`${variantsTable}.${dateTime}`, `${mainTable}.${dateTime}`);
182
+ })
183
+ .where(`${mainTable}.feature_name`, featureName)
184
+ .andWhereRaw(`${mainTable}.${dateTime} >= NOW() - INTERVAL '${hoursBack} hours'`);
185
+ const tokens = rows.reduce(variantRowReducerV2, {});
186
+ return Object.values(tokens);
187
+ }
188
+ async getSeenAppsForFeatureToggle(featureName, hoursBack = 24) {
189
+ return this.db(HOURLY_TABLE)
190
+ .distinct()
191
+ .where({ feature_name: featureName })
192
+ .andWhereRaw(`timestamp >= NOW() - INTERVAL '${hoursBack} hours'`)
193
+ .pluck('app_name')
194
+ .orderBy('app_name');
195
+ }
196
+ async getSeenTogglesForApp(appName, hoursBack = 24) {
197
+ return this.db(HOURLY_TABLE)
198
+ .distinct()
199
+ .where({ app_name: appName })
200
+ .andWhereRaw(`timestamp >= NOW() - INTERVAL '${hoursBack} hours'`)
201
+ .pluck('feature_name')
202
+ .orderBy('feature_name');
203
+ }
204
+ async clearMetrics(hoursAgo) {
205
+ return this.db(HOURLY_TABLE)
206
+ .whereRaw(`timestamp <= NOW() - INTERVAL '${hoursAgo} hours'`)
207
+ .del();
208
+ }
209
+ async clearDailyMetrics(daysAgo) {
210
+ return this.db(DAILY_TABLE)
211
+ .whereRaw(`date <= CURRENT_DATE - INTERVAL '${daysAgo} days'`)
212
+ .del();
213
+ }
214
+ async countPreviousDayHourlyMetricsBuckets() {
215
+ const enabledCountQuery = this.db(HOURLY_TABLE)
216
+ .whereRaw("timestamp >= CURRENT_DATE - INTERVAL '1 day'")
217
+ .andWhereRaw('timestamp < CURRENT_DATE')
218
+ .count()
219
+ .first();
220
+ const variantCountQuery = this.db(HOURLY_TABLE_VARIANTS)
221
+ .whereRaw("timestamp >= CURRENT_DATE - INTERVAL '1 day'")
222
+ .andWhereRaw('timestamp < CURRENT_DATE')
223
+ .count()
224
+ .first();
225
+ const [enabledCount, variantCount] = await Promise.all([
226
+ enabledCountQuery,
227
+ variantCountQuery,
228
+ ]);
229
+ return {
230
+ enabledCount: Number(enabledCount?.count || 0),
231
+ variantCount: Number(variantCount?.count || 0),
232
+ };
233
+ }
234
+ async countPreviousDayMetricsBuckets() {
235
+ const enabledCountQuery = this.db(DAILY_TABLE)
236
+ .whereRaw("date >= CURRENT_DATE - INTERVAL '1 day'")
237
+ .andWhereRaw('date < CURRENT_DATE')
238
+ .count()
239
+ .first();
240
+ const variantCountQuery = this.db(DAILY_TABLE_VARIANTS)
241
+ .whereRaw("date >= CURRENT_DATE - INTERVAL '1 day'")
242
+ .andWhereRaw('date < CURRENT_DATE')
243
+ .count()
244
+ .first();
245
+ const [enabledCount, variantCount] = await Promise.all([
246
+ enabledCountQuery,
247
+ variantCountQuery,
248
+ ]);
249
+ return {
250
+ enabledCount: Number(enabledCount?.count || 0),
251
+ variantCount: Number(variantCount?.count || 0),
252
+ };
253
+ }
254
+ // aggregates all hourly metrics from a previous day into daily metrics
255
+ async aggregateDailyMetrics() {
256
+ const rawQuery = `
257
+ INSERT INTO ${DAILY_TABLE} (feature_name, app_name, environment, date, yes, no)
258
+ SELECT
259
+ feature_name,
260
+ app_name,
261
+ environment,
262
+ CURRENT_DATE - INTERVAL '1 day' as date,
263
+ SUM(yes) as yes,
264
+ SUM(no) as no
265
+ FROM
266
+ ${HOURLY_TABLE}
267
+ WHERE
268
+ timestamp >= CURRENT_DATE - INTERVAL '1 day'
269
+ AND timestamp < CURRENT_DATE
270
+ GROUP BY
271
+ feature_name, app_name, environment
272
+ ON CONFLICT (feature_name, app_name, environment, date)
273
+ DO UPDATE SET yes = EXCLUDED.yes, no = EXCLUDED.no;
274
+ `;
275
+ const rawVariantsQuery = `
276
+ INSERT INTO ${DAILY_TABLE_VARIANTS} (feature_name, app_name, environment, date, variant, count)
277
+ SELECT
278
+ feature_name,
279
+ app_name,
280
+ environment,
281
+ CURRENT_DATE - INTERVAL '1 day' as date,
282
+ variant,
283
+ SUM(count) as count
284
+ FROM
285
+ ${HOURLY_TABLE_VARIANTS}
286
+ WHERE
287
+ timestamp >= CURRENT_DATE - INTERVAL '1 day'
288
+ AND timestamp < CURRENT_DATE
289
+ GROUP BY
290
+ feature_name, app_name, environment, variant
291
+ ON CONFLICT (feature_name, app_name, environment, date, variant)
292
+ DO UPDATE SET count = EXCLUDED.count;
293
+ `;
294
+ // have to be run serially since variants table has FK on yes/no metrics
295
+ await this.db.raw(rawQuery);
296
+ await this.db.raw(rawVariantsQuery);
297
+ }
298
+ }
299
+ exports.ClientMetricsStoreV2 = ClientMetricsStoreV2;
300
+ //# sourceMappingURL=client-metrics-store-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-metrics-store-v2.js","sourceRoot":"","sources":["../../../../../src/lib/features/metrics/client-metrics/client-metrics-store-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client-metrics-store-v2.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-metrics-store-v2.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/metrics/client-metrics/client-metrics-store-v2.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const database_init_1 = __importDefault(require("../../../../test/e2e/helpers/database-init"));
7
+ const no_logger_1 = __importDefault(require("../../../../test/fixtures/no-logger"));
8
+ const date_fns_1 = require("date-fns");
9
+ let stores;
10
+ let db;
11
+ let clientMetricsStore;
12
+ beforeAll(async () => {
13
+ db = await (0, database_init_1.default)('client_metrics_aggregation', no_logger_1.default);
14
+ stores = db.stores;
15
+ clientMetricsStore = stores.clientMetricsStoreV2;
16
+ });
17
+ afterAll(async () => {
18
+ await db.destroy();
19
+ });
20
+ beforeEach(async () => {
21
+ await clientMetricsStore.clearMetrics(0);
22
+ await clientMetricsStore.clearDailyMetrics(0);
23
+ });
24
+ test('aggregate daily metrics from previous day', async () => {
25
+ const yesterday = (0, date_fns_1.subDays)(new Date(), 1);
26
+ await clientMetricsStore.batchInsertMetrics([
27
+ {
28
+ appName: 'test',
29
+ featureName: 'feature',
30
+ environment: 'development',
31
+ timestamp: (0, date_fns_1.setHours)(yesterday, 10),
32
+ no: 0,
33
+ yes: 1,
34
+ variants: {
35
+ a: 1,
36
+ b: 0,
37
+ },
38
+ },
39
+ {
40
+ appName: 'test',
41
+ featureName: 'feature',
42
+ environment: 'development',
43
+ timestamp: (0, date_fns_1.setHours)(yesterday, 11),
44
+ no: 1,
45
+ yes: 1,
46
+ variants: {
47
+ a: 0,
48
+ b: 1,
49
+ },
50
+ },
51
+ ]);
52
+ await clientMetricsStore.aggregateDailyMetrics();
53
+ const hourlyMetrics = await clientMetricsStore.getMetricsForFeatureToggleV2('feature', 48);
54
+ expect(hourlyMetrics).toMatchObject([
55
+ {
56
+ featureName: 'feature',
57
+ appName: 'test',
58
+ environment: 'development',
59
+ timestamp: (0, date_fns_1.startOfHour)((0, date_fns_1.setHours)(yesterday, 10)),
60
+ yes: 1,
61
+ no: 0,
62
+ variants: { a: 1, b: 0 },
63
+ },
64
+ {
65
+ featureName: 'feature',
66
+ appName: 'test',
67
+ environment: 'development',
68
+ timestamp: (0, date_fns_1.startOfHour)((0, date_fns_1.setHours)(yesterday, 11)),
69
+ yes: 1,
70
+ no: 1,
71
+ variants: { a: 0, b: 1 },
72
+ },
73
+ ]);
74
+ const dailyMetrics = await clientMetricsStore.getMetricsForFeatureToggleV2('feature', 49);
75
+ expect(dailyMetrics).toMatchObject([
76
+ {
77
+ featureName: 'feature',
78
+ appName: 'test',
79
+ environment: 'development',
80
+ timestamp: (0, date_fns_1.endOfDay)(yesterday),
81
+ yes: 2,
82
+ no: 1,
83
+ variants: { a: 1, b: 1 },
84
+ },
85
+ ]);
86
+ });
87
+ test('clear daily metrics', async () => {
88
+ const yesterday = (0, date_fns_1.subDays)(new Date(), 1);
89
+ const twoDaysAgo = (0, date_fns_1.subDays)(new Date(), 2);
90
+ await clientMetricsStore.batchInsertMetrics([
91
+ {
92
+ appName: 'test',
93
+ featureName: 'feature',
94
+ environment: 'development',
95
+ timestamp: yesterday,
96
+ no: 0,
97
+ yes: 1,
98
+ variants: {
99
+ a: 0,
100
+ b: 1,
101
+ },
102
+ },
103
+ {
104
+ appName: 'test',
105
+ featureName: 'feature',
106
+ environment: 'development',
107
+ timestamp: twoDaysAgo,
108
+ no: 0,
109
+ yes: 2,
110
+ variants: {
111
+ a: 1,
112
+ b: 1,
113
+ },
114
+ },
115
+ ]);
116
+ await clientMetricsStore.aggregateDailyMetrics();
117
+ await clientMetricsStore.clearDailyMetrics(2);
118
+ const dailyMetrics = await clientMetricsStore.getMetricsForFeatureToggleV2('feature', 49);
119
+ expect(dailyMetrics).toMatchObject([
120
+ {
121
+ featureName: 'feature',
122
+ appName: 'test',
123
+ environment: 'development',
124
+ timestamp: (0, date_fns_1.endOfDay)(yesterday),
125
+ yes: 1,
126
+ no: 0,
127
+ variants: { a: 0, b: 1 },
128
+ },
129
+ ]);
130
+ });
131
+ test('clear daily metrics', async () => {
132
+ const yesterday = (0, date_fns_1.subDays)(new Date(), 1);
133
+ const twoDaysAgo = (0, date_fns_1.subDays)(new Date(), 2);
134
+ await clientMetricsStore.batchInsertMetrics([
135
+ {
136
+ appName: 'irrelevant',
137
+ featureName: 'irrelevant',
138
+ environment: 'irrelevant',
139
+ timestamp: yesterday,
140
+ no: 0,
141
+ yes: 1,
142
+ variants: {
143
+ a: 0,
144
+ b: 1,
145
+ },
146
+ },
147
+ {
148
+ appName: 'irrelevant',
149
+ featureName: 'irrelevant',
150
+ environment: 'irrelevant',
151
+ timestamp: twoDaysAgo,
152
+ no: 0,
153
+ yes: 2,
154
+ variants: {
155
+ a: 1,
156
+ b: 1,
157
+ },
158
+ },
159
+ ]);
160
+ await clientMetricsStore.aggregateDailyMetrics();
161
+ await clientMetricsStore.clearDailyMetrics(2);
162
+ const results = await db.rawDatabase
163
+ .table('client_metrics_env_daily')
164
+ .select('*');
165
+ expect(results.length).toBe(1);
166
+ const variantResults = await db.rawDatabase
167
+ .table('client_metrics_env_variants_daily')
168
+ .select('*');
169
+ expect(variantResults.length).toBe(2);
170
+ });
171
+ test('count previous day metrics', async () => {
172
+ const yesterday = (0, date_fns_1.subDays)(new Date(), 1);
173
+ await clientMetricsStore.batchInsertMetrics([
174
+ {
175
+ appName: 'test',
176
+ featureName: 'feature',
177
+ environment: 'development',
178
+ timestamp: (0, date_fns_1.setHours)(yesterday, 10),
179
+ no: 0,
180
+ yes: 1,
181
+ variants: {
182
+ a: 1,
183
+ b: 0,
184
+ },
185
+ },
186
+ {
187
+ appName: 'test',
188
+ featureName: 'feature',
189
+ environment: 'development',
190
+ timestamp: (0, date_fns_1.setHours)(yesterday, 11),
191
+ no: 1,
192
+ yes: 1,
193
+ variants: {
194
+ a: 0,
195
+ b: 1,
196
+ },
197
+ },
198
+ ]);
199
+ const result = await clientMetricsStore.countPreviousDayHourlyMetricsBuckets();
200
+ expect(result).toMatchObject({ enabledCount: 2, variantCount: 4 });
201
+ });
202
+ //# sourceMappingURL=client-metrics-store-v2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-metrics-store-v2.test.js","sourceRoot":"","sources":["../../../../../src/lib/features/metrics/client-metrics/client-metrics-store-v2.test.ts"],"names":[],"mappings":";;;;;AAAA,+FAA6E;AAC7E,oFAA4D;AAE5D,uCAAoE;AAEpE,IAAI,MAAsB,CAAC;AAC3B,IAAI,EAAW,CAAC;AAChB,IAAI,kBAAyC,CAAC;AAE9C,SAAS,CAAC,KAAK,IAAI,EAAE;IACjB,EAAE,GAAG,MAAM,IAAA,uBAAM,EAAC,4BAA4B,EAAE,mBAAS,CAAC,CAAC;IAC3D,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACnB,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAChB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;IACzD,MAAM,SAAS,GAAG,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,kBAAkB,CAAC;QACxC;YACI,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,CAAC;YAClC,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;QACD;YACI,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,CAAC;YAClC,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;KACJ,CAAC,CAAC;IAEH,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAEjD,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,4BAA4B,CACvE,SAAS,EACT,EAAE,CACL,CAAC;IACF,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC;QAChC;YACI,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,sBAAW,EAAC,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;YACL,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC3B;QACD;YACI,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,sBAAW,EAAC,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;YACL,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC3B;KACJ,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,4BAA4B,CACtE,SAAS,EACT,EAAE,CACL,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC;QAC/B;YACI,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,CAAC;YAC9B,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;YACL,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC3B;KACJ,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,SAAS,GAAG,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,kBAAkB,CAAC,kBAAkB,CAAC;QACxC;YACI,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;QACD;YACI,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,UAAU;YACrB,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;KACJ,CAAC,CAAC;IACH,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAEjD,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,4BAA4B,CACtE,SAAS,EACT,EAAE,CACL,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC;QAC/B;YACI,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,CAAC;YAC9B,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;YACL,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC3B;KACJ,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,SAAS,GAAG,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,kBAAkB,CAAC,kBAAkB,CAAC;QACxC;YACI,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,SAAS;YACpB,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;QACD;YACI,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,UAAU;YACrB,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;KACJ,CAAC,CAAC;IACH,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAEjD,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW;SAC/B,KAAK,CAAC,0BAA0B,CAAC;SACjC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,WAAW;SACtC,KAAK,CAAC,mCAAmC,CAAC;SAC1C,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC1C,MAAM,SAAS,GAAG,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,kBAAkB,CAAC,kBAAkB,CAAC;QACxC;YACI,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,CAAC;YAClC,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;QACD;YACI,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,CAAC;YAClC,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACP;SACJ;KACJ,CAAC,CAAC;IAEH,MAAM,MAAM,GACR,MAAM,kBAAkB,CAAC,oCAAoC,EAAE,CAAC;IAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { Request, Response } from 'express';
2
- import Controller from '../controller';
3
- import { IUnleashConfig } from '../../types/option';
4
- import { IUnleashServices } from '../../types';
5
- import { FeatureUsageSchema } from '../../openapi/spec/feature-usage-schema';
6
- import { FeatureMetricsSchema } from '../../openapi/spec/feature-metrics-schema';
2
+ import Controller from '../../../routes/controller';
3
+ import { IUnleashConfig } from '../../../types/option';
4
+ import { IUnleashServices } from '../../../types';
5
+ import { FeatureUsageSchema } from '../../../openapi/spec/feature-usage-schema';
6
+ import { FeatureMetricsSchema } from '../../../openapi/spec/feature-metrics-schema';
7
7
  interface IName {
8
8
  name: string;
9
9
  }
@@ -14,8 +14,10 @@ declare class ClientMetricsController extends Controller {
14
14
  private logger;
15
15
  private metrics;
16
16
  private openApiService;
17
+ private flagResolver;
17
18
  private static HOURS_BACK_MIN;
18
19
  private static HOURS_BACK_MAX;
20
+ private static HOURS_BACK_MAX_V2;
19
21
  constructor(config: IUnleashConfig, { clientMetricsServiceV2, openApiService, }: Pick<IUnleashServices, 'clientMetricsServiceV2' | 'openApiService'>);
20
22
  getRawToggleMetrics(req: Request<any, IName, IHoursBack, any>, res: Response<FeatureMetricsSchema>): Promise<void>;
21
23
  getToggleMetricsSummary(req: Request<IName>, res: Response<FeatureUsageSchema>): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-metrics.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/metrics/client-metrics/client-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAiB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOjE,OAAO,EACH,kBAAkB,EAErB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEH,oBAAoB,EACvB,MAAM,8CAA8C,CAAC;AAGtD,UAAU,KAAK;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,cAAM,uBAAwB,SAAQ,UAAU;IAC5C,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO,CAAyB;IAExC,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAAmC;IAEvD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAK;IAElC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAM;IAEnC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAW;gBAGvC,MAAM,EAAE,cAAc,EACtB,EACI,sBAAsB,EACtB,cAAc,GACjB,EAAE,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,GAAG,gBAAgB,CAAC;IAkDpE,mBAAmB,CACrB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EACzC,GAAG,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAeV,uBAAuB,CACzB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EACnB,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC;IAYhB,OAAO,CAAC,wBAAwB;CAcnC;AAED,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-metrics.e2e.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/features/metrics/client-metrics/client-metrics.e2e.test.ts"],"names":[],"mappings":""}
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const database_init_1 = __importDefault(require("../../helpers/database-init"));
7
- const test_helper_1 = require("../../helpers/test-helper");
8
- const no_logger_1 = __importDefault(require("../../../fixtures/no-logger"));
6
+ const database_init_1 = __importDefault(require("../../../../test/e2e/helpers/database-init"));
7
+ const test_helper_1 = require("../../../../test/e2e/helpers/test-helper");
8
+ const no_logger_1 = __importDefault(require("../../../../test/fixtures/no-logger"));
9
9
  const date_fns_1 = require("date-fns");
10
10
  let app;
11
11
  let db;
@@ -22,6 +22,7 @@ beforeAll(async () => {
22
22
  experimental: {
23
23
  flags: {
24
24
  strictSchemaValidation: true,
25
+ extendedUsageMetrics: true,
25
26
  },
26
27
  },
27
28
  }, db.rawDatabase);
@@ -129,16 +130,19 @@ test('should support the hoursBack query param for raw metrics', async () => {
129
130
  },
130
131
  ];
131
132
  await db.stores.clientMetricsStoreV2.batchInsertMetrics(metrics);
133
+ await db.stores.clientMetricsStoreV2.aggregateDailyMetrics();
132
134
  const hours1 = await fetchHoursBack(1);
133
135
  const hours24 = await fetchHoursBack(24);
134
136
  const hours48 = await fetchHoursBack(48);
135
137
  const hoursTooFew = await fetchHoursBack(-999);
136
- const hoursTooMany = await fetchHoursBack(999);
138
+ const hoursTooMany = await fetchHoursBack(24 * 31 * 3 + 1); // 3 months + 1 hour
139
+ const days = await fetchHoursBack(48 + 1); // switch to days after 48 hours
137
140
  expect(hours1.data).toHaveLength(1);
138
141
  expect(hours24.data).toHaveLength(24);
139
142
  expect(hours48.data).toHaveLength(48);
140
143
  expect(hoursTooFew.data).toHaveLength(24);
141
144
  expect(hoursTooMany.data).toHaveLength(24);
145
+ expect(days.data).toHaveLength(2); // two days of data
142
146
  });
143
147
  test('should return toggle summary', async () => {
144
148
  const date = new Date();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-metrics.e2e.test.js","sourceRoot":"","sources":["../../../../../src/lib/features/metrics/client-metrics/client-metrics.e2e.test.ts"],"names":[],"mappings":"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"}