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.
- package/dist/lib/addons/addon.d.ts.map +1 -1
- package/dist/lib/addons/addon.js +1 -0
- package/dist/lib/addons/addon.js.map +1 -1
- package/dist/lib/addons/datadog.d.ts.map +1 -1
- package/dist/lib/addons/datadog.js.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.d.ts.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.js +5 -1
- package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.test.js +18 -0
- package/dist/lib/addons/feature-event-formatter-md.test.js.map +1 -1
- package/dist/lib/addons/slack-app-definition.d.ts.map +1 -1
- package/dist/lib/addons/slack-app-definition.js +1 -0
- package/dist/lib/addons/slack-app-definition.js.map +1 -1
- package/dist/lib/addons/slack-app.test.js +9 -2
- package/dist/lib/addons/slack-app.test.js.map +1 -1
- package/dist/lib/addons/webhook-definition.d.ts.map +1 -1
- package/dist/lib/addons/webhook-definition.js +1 -0
- package/dist/lib/addons/webhook-definition.js.map +1 -1
- package/dist/lib/addons/webhook.js.map +1 -1
- package/dist/lib/app.d.ts +1 -1
- package/dist/lib/app.d.ts.map +1 -1
- package/dist/lib/app.js.map +1 -1
- package/dist/lib/create-config.d.ts.map +1 -1
- package/dist/lib/create-config.js +3 -1
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/db/access-store.d.ts +1 -1
- package/dist/lib/db/access-store.d.ts.map +1 -1
- package/dist/lib/db/access-store.js +3 -4
- package/dist/lib/db/access-store.js.map +1 -1
- package/dist/lib/db/access-store.test.js +1 -1
- package/dist/lib/db/access-store.test.js.map +1 -1
- package/dist/lib/db/client-applications-store.d.ts.map +1 -1
- package/dist/lib/db/client-applications-store.js.map +1 -1
- package/dist/lib/db/client-instance-store.d.ts +1 -0
- package/dist/lib/db/client-instance-store.d.ts.map +1 -1
- package/dist/lib/db/client-instance-store.js +9 -0
- package/dist/lib/db/client-instance-store.js.map +1 -1
- package/dist/lib/db/event-store.d.ts +2 -95
- package/dist/lib/db/event-store.d.ts.map +1 -1
- package/dist/lib/db/event-store.js +21 -293
- package/dist/lib/db/event-store.js.map +1 -1
- package/dist/lib/db/feature-environment-store.d.ts.map +1 -1
- package/dist/lib/db/feature-environment-store.js +7 -3
- package/dist/lib/db/feature-environment-store.js.map +1 -1
- package/dist/lib/db/feature-strategy-store.test.js +2 -6
- package/dist/lib/db/feature-strategy-store.test.js.map +1 -1
- package/dist/lib/db/index.js +5 -5
- package/dist/lib/db/index.js.map +1 -1
- package/dist/lib/db/project-stats-store.d.ts +3 -3
- package/dist/lib/db/project-stats-store.d.ts.map +1 -1
- package/dist/lib/db/project-store.d.ts.map +1 -1
- package/dist/lib/db/project-store.js +10 -1
- package/dist/lib/db/project-store.js.map +1 -1
- package/dist/lib/db/role-store.d.ts +4 -4
- package/dist/lib/db/role-store.d.ts.map +1 -1
- package/dist/lib/db/segment-store.d.ts.map +1 -1
- package/dist/lib/db/segment-store.js +1 -2
- package/dist/lib/db/segment-store.js.map +1 -1
- package/dist/lib/db/segment-store.test.js +5 -3
- package/dist/lib/db/segment-store.test.js.map +1 -1
- package/dist/lib/db/transaction.d.ts +1 -1
- package/dist/lib/db/transaction.d.ts.map +1 -1
- package/dist/lib/domain/project-health/project-health.d.ts +2 -2
- package/dist/lib/domain/project-health/project-health.d.ts.map +1 -1
- package/dist/lib/error/archivedfeature-error.d.ts +7 -0
- package/dist/lib/error/archivedfeature-error.d.ts.map +1 -0
- package/dist/lib/error/archivedfeature-error.js +12 -0
- package/dist/lib/error/archivedfeature-error.js.map +1 -0
- package/dist/lib/error/permission-error.js +1 -2
- package/dist/lib/error/permission-error.js.map +1 -1
- package/dist/lib/features/access/createAccessService.d.ts +1 -1
- package/dist/lib/features/access/createAccessService.d.ts.map +1 -1
- package/dist/lib/features/access/createAccessService.js +2 -5
- package/dist/lib/features/access/createAccessService.js.map +1 -1
- package/dist/lib/features/change-request-access-service/createChangeRequestAccessReadModel.d.ts +1 -1
- package/dist/lib/features/change-request-access-service/createChangeRequestAccessReadModel.d.ts.map +1 -1
- package/dist/lib/features/change-request-segment-usage-service/createChangeRequestSegmentUsageReadModel.d.ts +1 -1
- package/dist/lib/features/change-request-segment-usage-service/createChangeRequestSegmentUsageReadModel.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-service.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/tests/client-feature-toggle.e2e.test.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/tests/client-feature-toggles.e2e.test.js.map +1 -1
- package/dist/lib/features/dependent-features/createDependentFeaturesService.d.ts.map +1 -1
- package/dist/lib/features/dependent-features/createDependentFeaturesService.js +3 -21
- package/dist/lib/features/dependent-features/createDependentFeaturesService.js.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-read-model-type.d.ts.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-read-model.d.ts.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-read-model.js.map +1 -1
- package/dist/lib/features/dependent-features/fake-dependent-features-read-model.d.ts.map +1 -1
- package/dist/lib/features/dependent-features/fake-dependent-features-read-model.js.map +1 -1
- package/dist/lib/features/events/createEventsService.d.ts +6 -0
- package/dist/lib/features/events/createEventsService.d.ts.map +1 -0
- package/dist/lib/features/events/createEventsService.js +24 -0
- package/dist/lib/features/events/createEventsService.js.map +1 -0
- package/dist/lib/features/events/event-created-by-migration.test.d.ts +2 -0
- package/dist/lib/features/events/event-created-by-migration.test.d.ts.map +1 -0
- package/dist/lib/features/events/event-created-by-migration.test.js +130 -0
- package/dist/lib/features/events/event-created-by-migration.test.js.map +1 -0
- package/dist/lib/features/events/event-service.d.ts +35 -0
- package/dist/lib/features/events/event-service.d.ts.map +1 -0
- package/dist/lib/features/events/event-service.js +103 -0
- package/dist/lib/features/events/event-service.js.map +1 -0
- package/dist/lib/features/events/event-service.test.d.ts +2 -0
- package/dist/lib/features/events/event-service.test.d.ts.map +1 -0
- package/dist/lib/features/events/event-service.test.js +22 -0
- package/dist/lib/features/events/event-service.test.js.map +1 -0
- package/dist/lib/features/events/event-store.d.ts +100 -0
- package/dist/lib/features/events/event-store.d.ts.map +1 -0
- package/dist/lib/features/events/event-store.js +340 -0
- package/dist/lib/features/events/event-store.js.map +1 -0
- package/dist/lib/features/events/event-store.test.d.ts.map +1 -0
- package/dist/lib/{db → features/events}/event-store.test.js +9 -5
- package/dist/lib/features/events/event-store.test.js.map +1 -0
- package/dist/lib/features/export-import-toggles/createExportImportService.d.ts +1 -1
- package/dist/lib/features/export-import-toggles/createExportImportService.d.ts.map +1 -1
- package/dist/lib/features/export-import-toggles/createExportImportService.js +4 -6
- package/dist/lib/features/export-import-toggles/createExportImportService.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-permissions.e2e.test.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-service.d.ts.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-service.js +5 -1
- package/dist/lib/features/export-import-toggles/export-import-service.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import.e2e.test.js +60 -0
- package/dist/lib/features/export-import-toggles/export-import.e2e.test.js.map +1 -1
- package/dist/lib/features/export-import-toggles/import-permissions-service.d.ts.map +1 -1
- package/dist/lib/features/export-import-toggles/import-permissions-service.js.map +1 -1
- package/dist/lib/features/feature-search/fake-feature-search-store.d.ts +1 -1
- package/dist/lib/features/feature-search/fake-feature-search-store.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-controller.js +35 -38
- package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
- package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
- package/dist/lib/features/feature-search/feature.search.e2e.test.js +0 -1
- package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js +1 -1
- package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js.map +1 -1
- package/dist/lib/features/feature-toggle/converters/feature-toggle-row-converter.d.ts +1 -1
- package/dist/lib/features/feature-toggle/createFeatureToggleService.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/createFeatureToggleService.js +6 -6
- package/dist/lib/features/feature-toggle/createFeatureToggleService.js.map +1 -1
- package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.d.ts +3 -2
- package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.js +3 -0
- package/dist/lib/features/feature-toggle/fakes/fake-feature-toggle-store.js.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-service.d.ts +7 -4
- package/dist/lib/features/feature-toggle/feature-toggle-service.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-service.js +51 -7
- package/dist/lib/features/feature-toggle/feature-toggle-service.js.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-store.d.ts +2 -1
- package/dist/lib/features/feature-toggle/feature-toggle-store.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-store.js +27 -0
- package/dist/lib/features/feature-toggle/feature-toggle-store.js.map +1 -1
- package/dist/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.js +3 -0
- package/dist/lib/features/feature-toggle/tests/feature-toggle-service.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/tests/feature-toggle-store.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/tests/feature-toggle-strategies-store.e2e.test.js +3 -3
- package/dist/lib/features/feature-toggle/tests/feature-toggle-strategies-store.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/tests/feature-toggles.e2e.test.js +36 -0
- package/dist/lib/features/feature-toggle/tests/feature-toggles.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/types/feature-toggle-store-type.d.ts +2 -1
- package/dist/lib/features/feature-toggle/types/feature-toggle-store-type.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts.map +1 -1
- package/dist/lib/features/group/createGroupService.d.ts.map +1 -1
- package/dist/lib/features/group/createGroupService.js +3 -6
- package/dist/lib/features/group/createGroupService.js.map +1 -1
- package/dist/lib/features/index.d.ts +2 -0
- package/dist/lib/features/index.d.ts.map +1 -1
- package/dist/lib/features/index.js +2 -0
- package/dist/lib/features/index.js.map +1 -1
- package/dist/lib/features/instance-stats/createInstanceStatsService.d.ts +6 -0
- package/dist/lib/features/instance-stats/createInstanceStatsService.d.ts.map +1 -0
- package/dist/lib/features/instance-stats/createInstanceStatsService.js +129 -0
- package/dist/lib/features/instance-stats/createInstanceStatsService.js.map +1 -0
- package/dist/lib/features/instance-stats/getActiveUsers.d.ts +1 -1
- package/dist/lib/features/instance-stats/getActiveUsers.d.ts.map +1 -1
- package/dist/lib/features/instance-stats/getProductionChanges.d.ts +1 -1
- package/dist/lib/features/instance-stats/getProductionChanges.d.ts.map +1 -1
- package/dist/lib/features/instance-stats/getProductionChanges.js.map +1 -1
- package/dist/lib/features/instance-stats/instance-stats-service.d.ts +6 -1
- package/dist/lib/features/instance-stats/instance-stats-service.d.ts.map +1 -1
- package/dist/lib/features/instance-stats/instance-stats-service.js +5 -2
- package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
- package/dist/lib/features/maintenance/maintenance-controller.d.ts +1 -1
- package/dist/lib/features/maintenance/maintenance-controller.d.ts.map +1 -1
- package/dist/lib/features/maintenance/maintenance-service.js +1 -1
- package/dist/lib/features/maintenance/maintenance-service.js.map +1 -1
- package/dist/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.d.ts.map +1 -0
- package/dist/{test/e2e/services → lib/features/metrics/client-metrics}/client-metrics-service.e2e.test.js +6 -6
- package/dist/lib/features/metrics/client-metrics/client-metrics-service.e2e.test.js.map +1 -0
- package/dist/lib/{types/stores/client-metrics-store-v2.d.ts → features/metrics/client-metrics/client-metrics-store-v2-type.d.ts} +13 -2
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2-type.d.ts.map +1 -0
- package/dist/lib/{types/stores/client-metrics-store-v2.js → features/metrics/client-metrics/client-metrics-store-v2-type.js} +1 -1
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2-type.js.map +1 -0
- package/dist/lib/{db → features/metrics/client-metrics}/client-metrics-store-v2.d.ts +15 -4
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.d.ts.map +1 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.d.ts.map +1 -0
- package/dist/{test/e2e/stores → lib/features/metrics/client-metrics}/client-metrics-store-v2.e2e.test.js +2 -2
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.e2e.test.js.map +1 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.js +300 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.js.map +1 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.d.ts +2 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.d.ts.map +1 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.js +202 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics-store-v2.test.js.map +1 -0
- package/dist/lib/{routes/admin-api → features/metrics/client-metrics}/client-metrics.d.ts +7 -5
- package/dist/lib/features/metrics/client-metrics/client-metrics.d.ts.map +1 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics.e2e.test.d.ts.map +1 -0
- package/dist/{test/e2e/api/admin → lib/features/metrics/client-metrics}/client-metrics.e2e.test.js +8 -4
- package/dist/lib/features/metrics/client-metrics/client-metrics.e2e.test.js.map +1 -0
- package/dist/lib/{routes/admin-api → features/metrics/client-metrics}/client-metrics.js +13 -9
- package/dist/lib/{routes/admin-api → features/metrics/client-metrics}/client-metrics.js.map +1 -1
- package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.d.ts +1 -1
- package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.d.ts.map +1 -0
- package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.js.map +1 -0
- package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.d.ts.map +1 -0
- package/dist/lib/features/metrics/client-metrics/collapseHourlyMetrics.test.js.map +1 -0
- package/dist/{test/fixtures → lib/features/metrics/client-metrics}/fake-client-metrics-store-v2.d.ts +12 -1
- package/dist/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.d.ts.map +1 -0
- package/dist/{test/fixtures → lib/features/metrics/client-metrics}/fake-client-metrics-store-v2.js +15 -0
- package/dist/lib/features/metrics/client-metrics/fake-client-metrics-store-v2.js.map +1 -0
- package/dist/lib/{services → features/metrics}/client-metrics/metrics-service-v2.d.ts +11 -8
- package/dist/lib/features/metrics/client-metrics/metrics-service-v2.d.ts.map +1 -0
- package/dist/lib/{services → features/metrics}/client-metrics/metrics-service-v2.js +54 -9
- package/dist/lib/features/metrics/client-metrics/metrics-service-v2.js.map +1 -0
- package/dist/lib/features/metrics/client-metrics/metrics-service-v2.test.d.ts.map +1 -0
- package/dist/lib/features/metrics/client-metrics/metrics-service-v2.test.js +271 -0
- package/dist/lib/features/metrics/client-metrics/metrics-service-v2.test.js.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.d.ts +9 -8
- package/dist/lib/features/metrics/instance/instance-service.d.ts.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.js +18 -5
- package/dist/lib/features/metrics/instance/instance-service.js.map +1 -0
- package/dist/lib/features/metrics/instance/instance-service.test.d.ts.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.test.js +18 -15
- package/dist/lib/features/metrics/instance/instance-service.test.js.map +1 -0
- package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.d.ts +9 -7
- package/dist/lib/features/metrics/instance/metrics.d.ts.map +1 -0
- package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.js +51 -4
- package/dist/lib/features/metrics/instance/metrics.js.map +1 -0
- package/dist/lib/features/metrics/instance/metrics.test.d.ts.map +1 -0
- package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.test.js +124 -7
- package/dist/lib/features/metrics/instance/metrics.test.js.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics/instance}/models.d.ts +1 -1
- package/dist/lib/features/metrics/instance/models.d.ts.map +1 -0
- package/dist/lib/features/metrics/instance/models.js.map +1 -0
- package/dist/lib/{routes/client-api → features/metrics/instance}/register.d.ts +8 -8
- package/dist/lib/features/metrics/instance/register.d.ts.map +1 -0
- package/dist/lib/{routes/client-api → features/metrics/instance}/register.js +8 -7
- package/dist/lib/features/metrics/instance/register.js.map +1 -0
- package/dist/lib/features/metrics/instance/register.test.d.ts.map +1 -0
- package/dist/lib/{routes/client-api → features/metrics/instance}/register.test.js +20 -5
- package/dist/lib/features/metrics/instance/register.test.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/createLastSeenService.d.ts.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics}/last-seen/createLastSeenService.js +2 -2
- package/dist/lib/features/metrics/last-seen/createLastSeenService.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/fake-last-seen-read-model.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/fake-last-seen-read-model.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/fake-last-seen-store.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/fake-last-seen-store.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/last-seen-read-model.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/last-seen-read-model.js.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-service.d.ts +2 -2
- package/dist/lib/features/metrics/last-seen/last-seen-service.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/last-seen-service.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/last-seen-store.d.ts.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-store.js +1 -1
- package/dist/lib/features/metrics/last-seen/last-seen-store.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/tests/last-seen-service.e2e.test.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/tests/last-seen-service.e2e.test.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/tests/last-seen-service.test.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/tests/last-seen-service.test.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/types/last-seen-read-model-type.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/types/last-seen-read-model-type.js.map +1 -0
- package/dist/lib/features/metrics/last-seen/types/last-seen-store-type.d.ts.map +1 -0
- package/dist/lib/features/metrics/last-seen/types/last-seen-store-type.js.map +1 -0
- package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.d.ts +1 -1
- package/dist/lib/features/metrics/shared/schema.d.ts.map +1 -0
- package/dist/lib/features/metrics/shared/schema.js.map +1 -0
- package/dist/lib/features/metrics/shared/schema.test.d.ts.map +1 -0
- package/dist/lib/features/metrics/shared/schema.test.js.map +1 -0
- package/dist/lib/features/playground/advanced-playground.test.js +12 -13
- package/dist/lib/features/playground/advanced-playground.test.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/client.d.ts +2 -2
- package/dist/lib/features/playground/feature-evaluator/client.d.ts.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/client.js +17 -7
- package/dist/lib/features/playground/feature-evaluator/client.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/feature-evaluator.d.ts.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js +3 -2
- package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/repository/index.d.ts.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/repository/storage-provider.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/strategy/strategy.d.ts +2 -2
- package/dist/lib/features/playground/feature-evaluator/strategy/strategy.d.ts.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/variant.d.ts +5 -0
- package/dist/lib/features/playground/feature-evaluator/variant.d.ts.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/variant.js.map +1 -1
- package/dist/lib/features/playground/offline-unleash-client.d.ts +3 -3
- package/dist/lib/features/playground/offline-unleash-client.d.ts.map +1 -1
- package/dist/lib/features/playground/offline-unleash-client.js +5 -2
- package/dist/lib/features/playground/offline-unleash-client.js.map +1 -1
- package/dist/lib/features/playground/offline-unleash-client.test.js +1 -1
- package/dist/lib/features/playground/offline-unleash-client.test.js.map +1 -1
- package/dist/lib/features/playground/playground-service.d.ts +6 -6
- package/dist/lib/features/playground/playground-service.d.ts.map +1 -1
- package/dist/lib/features/playground/playground-service.js +7 -3
- package/dist/lib/features/playground/playground-service.js.map +1 -1
- package/dist/lib/features/playground/playground-view-model.d.ts +1 -1
- package/dist/lib/features/playground/playground-view-model.d.ts.map +1 -1
- package/dist/lib/features/playground/playground.d.ts.map +1 -1
- package/dist/lib/features/playground/playground.js +2 -1
- package/dist/lib/features/playground/playground.js.map +1 -1
- package/dist/lib/features/private-project/createPrivateProjectChecker.d.ts +1 -1
- package/dist/lib/features/private-project/createPrivateProjectChecker.d.ts.map +1 -1
- package/dist/lib/features/private-project/privateProjectStore.js +1 -1
- package/dist/lib/features/private-project/privateProjectStore.js.map +1 -1
- package/dist/lib/features/project/createProjectService.d.ts +1 -1
- package/dist/lib/features/project/createProjectService.d.ts.map +1 -1
- package/dist/lib/features/project/createProjectService.js +2 -2
- package/dist/lib/features/project/createProjectService.js.map +1 -1
- package/dist/lib/features/project-environments/createEnvironmentService.d.ts.map +1 -1
- package/dist/lib/features/project-environments/createEnvironmentService.js +2 -8
- package/dist/lib/features/project-environments/createEnvironmentService.js.map +1 -1
- package/dist/lib/features/project-environments/environment-service.d.ts +1 -1
- package/dist/lib/features/project-environments/environment-service.d.ts.map +1 -1
- package/dist/lib/features/project-environments/environment-service.test.js.map +1 -1
- package/dist/lib/features/project-environments/environment-store.d.ts.map +1 -1
- package/dist/lib/features/project-environments/environment-store.js +12 -0
- package/dist/lib/features/project-environments/environment-store.js.map +1 -1
- package/dist/lib/features/project-environments/environments.d.ts.map +1 -1
- package/dist/lib/features/scheduler/schedule-services.d.ts.map +1 -1
- package/dist/lib/features/scheduler/schedule-services.js +3 -1
- package/dist/lib/features/scheduler/schedule-services.js.map +1 -1
- package/dist/lib/features/scheduler/scheduler-service.d.ts +2 -1
- package/dist/lib/features/scheduler/scheduler-service.d.ts.map +1 -1
- package/dist/lib/features/scheduler/scheduler-service.js +42 -13
- package/dist/lib/features/scheduler/scheduler-service.js.map +1 -1
- package/dist/lib/features/scheduler/scheduler-service.test.js +35 -2
- package/dist/lib/features/scheduler/scheduler-service.test.js.map +1 -1
- package/dist/lib/features/segment/createSegmentService.d.ts +1 -1
- package/dist/lib/features/segment/createSegmentService.d.ts.map +1 -1
- package/dist/lib/features/segment/createSegmentService.js +2 -7
- package/dist/lib/features/segment/createSegmentService.js.map +1 -1
- package/dist/lib/features/segment/segment-controller.d.ts.map +1 -1
- package/dist/lib/features/segment/segment-controller.js +14 -25
- package/dist/lib/features/segment/segment-controller.js.map +1 -1
- package/dist/lib/features/tag-type/createTagTypeService.d.ts.map +1 -1
- package/dist/lib/features/tag-type/createTagTypeService.js +3 -17
- package/dist/lib/features/tag-type/createTagTypeService.js.map +1 -1
- package/dist/lib/features/tag-type/tag-type-service.d.ts +1 -1
- package/dist/lib/features/tag-type/tag-type-service.d.ts.map +1 -1
- package/dist/lib/features/tag-type/tag-types.e2e.test.js.map +1 -1
- package/dist/lib/metric-events.d.ts +3 -1
- package/dist/lib/metric-events.d.ts.map +1 -1
- package/dist/lib/metric-events.js +5 -1
- package/dist/lib/metric-events.js.map +1 -1
- package/dist/lib/metrics.d.ts +2 -3
- package/dist/lib/metrics.d.ts.map +1 -1
- package/dist/lib/metrics.js +150 -89
- package/dist/lib/metrics.js.map +1 -1
- package/dist/lib/metrics.test.js.map +1 -1
- package/dist/lib/middleware/api-token-middleware.d.ts +1 -1
- package/dist/lib/middleware/api-token-middleware.d.ts.map +1 -1
- package/dist/lib/middleware/demo-authentication.d.ts +1 -1
- package/dist/lib/middleware/demo-authentication.d.ts.map +1 -1
- package/dist/lib/middleware/demo-authentication.js +6 -2
- package/dist/lib/middleware/demo-authentication.js.map +1 -1
- package/dist/lib/middleware/pat-middleware.d.ts +4 -1
- package/dist/lib/middleware/pat-middleware.d.ts.map +1 -1
- package/dist/lib/middleware/pat-middleware.js +0 -1
- package/dist/lib/middleware/pat-middleware.js.map +1 -1
- package/dist/lib/middleware/pat-middleware.test.js +5 -0
- package/dist/lib/middleware/pat-middleware.test.js.map +1 -1
- package/dist/lib/middleware/response-time-metrics.d.ts +1 -1
- package/dist/lib/middleware/response-time-metrics.d.ts.map +1 -1
- package/dist/lib/middleware/response-time-metrics.js.map +1 -1
- package/dist/lib/middleware/session-db.js.map +1 -1
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts +4 -0
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js +4 -0
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts +4 -0
- package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts +8 -0
- package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/create-api-token-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/feature-type-count-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-type-count-schema.js.map +1 -1
- package/dist/lib/openapi/spec/feature-type-count-schema.test.js.map +1 -1
- package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts +18 -0
- package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/instance-admin-stats-schema.js +18 -0
- package/dist/lib/openapi/spec/instance-admin-stats-schema.js.map +1 -1
- package/dist/lib/openapi/spec/playground-feature-schema.d.ts +11 -0
- package/dist/lib/openapi/spec/playground-feature-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/playground-feature-schema.js +11 -0
- package/dist/lib/openapi/spec/playground-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/playground-response-schema.d.ts +11 -0
- package/dist/lib/openapi/spec/playground-response-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/project-overview-schema.test.js.map +1 -1
- package/dist/lib/openapi/spec/project-schema.d.ts +15 -0
- package/dist/lib/openapi/spec/project-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/project-schema.js +15 -0
- package/dist/lib/openapi/spec/project-schema.js.map +1 -1
- package/dist/lib/openapi/spec/projects-schema.d.ts +15 -0
- package/dist/lib/openapi/spec/projects-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/proxy-feature-schema.d.ts +12 -1
- package/dist/lib/openapi/spec/proxy-feature-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/proxy-feature-schema.js +12 -1
- package/dist/lib/openapi/spec/proxy-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/proxy-features-schema.d.ts +12 -1
- package/dist/lib/openapi/spec/proxy-features-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/search-events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/state-schema.d.ts +15 -0
- package/dist/lib/openapi/spec/state-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/ui-config-schema.d.ts +12 -1
- package/dist/lib/openapi/spec/ui-config-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/variant-flag-schema.d.ts +12 -1
- package/dist/lib/openapi/spec/variant-flag-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/variant-flag-schema.js +12 -1
- package/dist/lib/openapi/spec/variant-flag-schema.js.map +1 -1
- package/dist/lib/proxy/proxy-repository.d.ts.map +1 -1
- package/dist/lib/proxy/proxy-repository.js.map +1 -1
- package/dist/lib/routes/admin-api/addon.d.ts +1 -1
- package/dist/lib/routes/admin-api/addon.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/api-token.d.ts +1 -0
- package/dist/lib/routes/admin-api/api-token.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/api-token.js +5 -0
- package/dist/lib/routes/admin-api/api-token.js.map +1 -1
- package/dist/lib/routes/admin-api/api-token.test.d.ts +2 -0
- package/dist/lib/routes/admin-api/api-token.test.d.ts.map +1 -0
- package/dist/lib/routes/admin-api/api-token.test.js +105 -0
- package/dist/lib/routes/admin-api/api-token.test.js.map +1 -0
- package/dist/lib/routes/admin-api/config.d.ts +3 -1
- package/dist/lib/routes/admin-api/config.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/config.js +15 -3
- package/dist/lib/routes/admin-api/config.js.map +1 -1
- package/dist/lib/routes/admin-api/config.test.js +44 -0
- package/dist/lib/routes/admin-api/config.test.js.map +1 -1
- package/dist/lib/routes/admin-api/context.d.ts +2 -2
- package/dist/lib/routes/admin-api/context.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/context.js +1 -1
- package/dist/lib/routes/admin-api/context.js.map +1 -1
- package/dist/lib/routes/admin-api/context.test.js.map +1 -1
- package/dist/lib/routes/admin-api/index.js +1 -1
- package/dist/lib/routes/admin-api/index.js.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.js +4 -0
- package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
- package/dist/lib/routes/admin-api/metrics.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/metrics.js +2 -1
- package/dist/lib/routes/admin-api/metrics.js.map +1 -1
- package/dist/lib/routes/admin-api/metrics.test.js.map +1 -1
- package/dist/lib/routes/admin-api/project/project-api.d.ts +1 -1
- package/dist/lib/routes/admin-api/project/project-api.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/project/project-api.js.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.d.ts +2 -2
- package/dist/lib/routes/admin-api/project/variants.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/public-signup.test.js +14 -3
- package/dist/lib/routes/admin-api/public-signup.test.js.map +1 -1
- package/dist/lib/routes/admin-api/state.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/state.js +1 -0
- package/dist/lib/routes/admin-api/state.js.map +1 -1
- package/dist/lib/routes/admin-api/tag.test.js.map +1 -1
- package/dist/lib/routes/admin-api/telemetry.d.ts +2 -2
- package/dist/lib/routes/admin-api/telemetry.d.ts.map +1 -1
- package/dist/lib/routes/client-api/index.js +2 -2
- package/dist/lib/routes/client-api/index.js.map +1 -1
- package/dist/lib/routes/controller.d.ts.map +1 -1
- package/dist/lib/routes/controller.js.map +1 -1
- package/dist/lib/routes/edge-api/index.js +2 -2
- package/dist/lib/routes/edge-api/index.js.map +1 -1
- package/dist/lib/routes/health-check.test.js.map +1 -1
- package/dist/lib/routes/public-invite.test.js +7 -2
- package/dist/lib/routes/public-invite.test.js.map +1 -1
- package/dist/lib/segments/segment-service-interface.d.ts +3 -3
- package/dist/lib/segments/segment-service-interface.d.ts.map +1 -1
- package/dist/lib/server-impl.d.ts.map +1 -1
- package/dist/lib/server-impl.js +4 -3
- package/dist/lib/server-impl.js.map +1 -1
- package/dist/lib/services/access-service.d.ts +10 -3
- package/dist/lib/services/access-service.d.ts.map +1 -1
- package/dist/lib/services/access-service.js.map +1 -1
- package/dist/lib/services/access-service.test.js +2 -5
- package/dist/lib/services/access-service.test.js.map +1 -1
- package/dist/lib/services/account-service.d.ts +1 -1
- package/dist/lib/services/account-service.d.ts.map +1 -1
- package/dist/lib/services/account-service.js.map +1 -1
- package/dist/lib/services/addon-service.d.ts +1 -1
- package/dist/lib/services/addon-service.d.ts.map +1 -1
- package/dist/lib/services/addon-service.test.js +6 -2
- package/dist/lib/services/addon-service.test.js.map +1 -1
- package/dist/lib/services/api-token-service.d.ts +9 -2
- package/dist/lib/services/api-token-service.d.ts.map +1 -1
- package/dist/lib/services/api-token-service.js +22 -3
- package/dist/lib/services/api-token-service.js.map +1 -1
- package/dist/lib/services/api-token-service.test.js +20 -5
- package/dist/lib/services/api-token-service.test.js.map +1 -1
- package/dist/lib/services/context-service.d.ts +1 -1
- package/dist/lib/services/context-service.d.ts.map +1 -1
- package/dist/lib/services/context-service.js.map +1 -1
- package/dist/lib/services/email-service.d.ts +1 -1
- package/dist/lib/services/email-service.d.ts.map +1 -1
- package/dist/lib/services/email-service.js +5 -1
- package/dist/lib/services/email-service.js.map +1 -1
- package/dist/lib/services/event-service.d.ts +3 -18
- package/dist/lib/services/event-service.d.ts.map +1 -1
- package/dist/lib/services/event-service.js +21 -58
- package/dist/lib/services/event-service.js.map +1 -1
- package/dist/lib/services/favorites-service.d.ts +1 -1
- package/dist/lib/services/favorites-service.d.ts.map +1 -1
- package/dist/lib/services/feature-service-potentially-stale.test.js +1 -1
- package/dist/lib/services/feature-service-potentially-stale.test.js.map +1 -1
- package/dist/lib/services/feature-tag-service.d.ts +1 -1
- package/dist/lib/services/feature-tag-service.d.ts.map +1 -1
- package/dist/lib/services/feature-type-service.d.ts +1 -1
- package/dist/lib/services/feature-type-service.d.ts.map +1 -1
- package/dist/lib/services/feature-type-service.js.map +1 -1
- package/dist/lib/services/group-service.d.ts +1 -1
- package/dist/lib/services/group-service.d.ts.map +1 -1
- package/dist/lib/services/index.d.ts +4 -4
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +9 -6
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/pat-service.d.ts +1 -1
- package/dist/lib/services/pat-service.d.ts.map +1 -1
- package/dist/lib/services/project-service.d.ts +3 -3
- package/dist/lib/services/project-service.d.ts.map +1 -1
- package/dist/lib/services/proxy-service.d.ts.map +1 -1
- package/dist/lib/services/proxy-service.js.map +1 -1
- package/dist/lib/services/public-signup-token-service.d.ts +2 -2
- package/dist/lib/services/public-signup-token-service.d.ts.map +1 -1
- package/dist/lib/services/reset-token-service.js.map +1 -1
- package/dist/lib/services/segment-service.d.ts +2 -2
- package/dist/lib/services/segment-service.d.ts.map +1 -1
- package/dist/lib/services/segment-service.js +1 -2
- package/dist/lib/services/segment-service.js.map +1 -1
- package/dist/lib/services/setting-service.d.ts +1 -1
- package/dist/lib/services/setting-service.d.ts.map +1 -1
- package/dist/lib/services/state-service.d.ts +1 -1
- package/dist/lib/services/state-service.d.ts.map +1 -1
- package/dist/lib/services/state-service.js +1 -0
- package/dist/lib/services/state-service.js.map +1 -1
- package/dist/lib/services/state-service.test.js +14 -4
- package/dist/lib/services/state-service.test.js.map +1 -1
- package/dist/lib/services/state-util.d.ts.map +1 -1
- package/dist/lib/services/state-util.js.map +1 -1
- package/dist/lib/services/strategy-service.d.ts +1 -1
- package/dist/lib/services/strategy-service.d.ts.map +1 -1
- package/dist/lib/services/tag-service.d.ts +1 -1
- package/dist/lib/services/tag-service.d.ts.map +1 -1
- package/dist/lib/services/user-service.d.ts +1 -1
- package/dist/lib/services/user-service.d.ts.map +1 -1
- package/dist/lib/services/user-service.js +6 -3
- package/dist/lib/services/user-service.js.map +1 -1
- package/dist/lib/services/user-service.test.js +1 -1
- package/dist/lib/services/user-service.test.js.map +1 -1
- package/dist/lib/services/version-service.d.ts.map +1 -1
- package/dist/lib/services/version-service.js.map +1 -1
- package/dist/lib/types/api-user.d.ts +1 -0
- package/dist/lib/types/api-user.d.ts.map +1 -1
- package/dist/lib/types/api-user.js.map +1 -1
- package/dist/lib/types/core.d.ts +2 -1
- package/dist/lib/types/core.d.ts.map +1 -1
- package/dist/lib/types/core.js +10 -3
- package/dist/lib/types/core.js.map +1 -1
- package/dist/lib/types/core.test.d.ts +2 -0
- package/dist/lib/types/core.test.d.ts.map +1 -0
- package/dist/lib/types/core.test.js +62 -0
- package/dist/lib/types/core.test.js.map +1 -0
- package/dist/lib/types/events.d.ts +19 -2
- package/dist/lib/types/events.d.ts.map +1 -1
- package/dist/lib/types/events.js +10 -4
- package/dist/lib/types/events.js.map +1 -1
- package/dist/lib/types/experimental.d.ts +1 -1
- package/dist/lib/types/experimental.d.ts.map +1 -1
- package/dist/lib/types/experimental.js +29 -6
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/lib/types/model.d.ts +4 -1
- package/dist/lib/types/model.d.ts.map +1 -1
- package/dist/lib/types/models/api-token.js +1 -1
- package/dist/lib/types/models/api-token.js.map +1 -1
- package/dist/lib/types/no-auth-user.d.ts +0 -1
- package/dist/lib/types/no-auth-user.d.ts.map +1 -1
- package/dist/lib/types/no-auth-user.js +1 -3
- package/dist/lib/types/no-auth-user.js.map +1 -1
- package/dist/lib/types/option.d.ts +2 -1
- package/dist/lib/types/option.d.ts.map +1 -1
- package/dist/lib/types/permissions.d.ts +8 -0
- package/dist/lib/types/permissions.d.ts.map +1 -1
- package/dist/lib/types/permissions.js +9 -1
- package/dist/lib/types/permissions.js.map +1 -1
- package/dist/lib/types/services.d.ts +9 -9
- package/dist/lib/types/services.d.ts.map +1 -1
- package/dist/lib/types/stores/access-store.d.ts +1 -1
- package/dist/lib/types/stores/access-store.d.ts.map +1 -1
- package/dist/lib/types/stores/client-instance-store.d.ts +1 -0
- package/dist/lib/types/stores/client-instance-store.d.ts.map +1 -1
- package/dist/lib/types/stores/event-store.d.ts +2 -1
- package/dist/lib/types/stores/event-store.d.ts.map +1 -1
- package/dist/lib/types/stores/project-stats-store-type.d.ts +2 -2
- package/dist/lib/types/stores/project-stats-store-type.d.ts.map +1 -1
- package/dist/lib/types/stores/role-store.d.ts +1 -1
- package/dist/lib/types/stores/role-store.d.ts.map +1 -1
- package/dist/lib/types/stores/strategy-store.d.ts +1 -1
- package/dist/lib/types/stores/strategy-store.d.ts.map +1 -1
- package/dist/lib/types/stores.d.ts +2 -2
- package/dist/lib/types/stores.d.ts.map +1 -1
- package/dist/lib/util/anonymise.d.ts +1 -0
- package/dist/lib/util/anonymise.d.ts.map +1 -1
- package/dist/lib/util/anonymise.js +13 -1
- package/dist/lib/util/anonymise.js.map +1 -1
- package/dist/lib/util/constants.d.ts +1 -0
- package/dist/lib/util/constants.d.ts.map +1 -1
- package/dist/lib/util/constants.js +2 -1
- package/dist/lib/util/constants.js.map +1 -1
- package/dist/lib/util/extract-user.d.ts +6 -6
- package/dist/lib/util/extract-user.d.ts.map +1 -1
- package/dist/lib/util/extract-user.js +3 -1
- package/dist/lib/util/extract-user.js.map +1 -1
- package/dist/lib/util/flag-resolver.js +1 -1
- package/dist/lib/util/flag-resolver.js.map +1 -1
- package/dist/lib/util/flag-resolver.test.js +34 -0
- package/dist/lib/util/flag-resolver.test.js.map +1 -1
- package/dist/lib/util/index.d.ts +1 -1
- package/dist/lib/util/index.d.ts.map +1 -1
- package/dist/lib/util/index.js +1 -1
- package/dist/lib/util/index.js.map +1 -1
- package/dist/lib/util/metrics/createCounter.d.ts +15 -0
- package/dist/lib/util/metrics/createCounter.d.ts.map +1 -0
- package/dist/lib/util/metrics/createCounter.js +48 -0
- package/dist/lib/util/metrics/createCounter.js.map +1 -0
- package/dist/lib/util/metrics/createGauge.d.ts +15 -0
- package/dist/lib/util/metrics/createGauge.d.ts.map +1 -0
- package/dist/lib/util/metrics/createGauge.js +45 -0
- package/dist/lib/util/metrics/createGauge.js.map +1 -0
- package/dist/lib/util/metrics/createSummary.d.ts +14 -0
- package/dist/lib/util/metrics/createSummary.d.ts.map +1 -0
- package/dist/lib/util/metrics/createSummary.js +39 -0
- package/dist/lib/util/metrics/createSummary.js.map +1 -0
- package/dist/lib/util/metrics/index.d.ts +4 -0
- package/dist/lib/util/metrics/index.d.ts.map +1 -0
- package/dist/lib/util/metrics/index.js +20 -0
- package/dist/lib/util/metrics/index.js.map +1 -0
- package/dist/lib/util/omit-keys.d.ts.map +1 -1
- package/dist/lib/util/omit-keys.js.map +1 -1
- package/dist/lib/util/time-utils.d.ts +1 -0
- package/dist/lib/util/time-utils.d.ts.map +1 -1
- package/dist/lib/util/time-utils.js +11 -1
- package/dist/lib/util/time-utils.js.map +1 -1
- package/dist/lib/util/time-utils.test.js +7 -0
- package/dist/lib/util/time-utils.test.js.map +1 -1
- package/dist/lib/util/timer.test.js.map +1 -1
- package/dist/mailtemplates/scheduled-change-conflict/scheduled-change-conflict.html.mustache +91 -206
- package/dist/mailtemplates/scheduled-change-conflict/scheduled-change-conflict.plain.mustache +4 -0
- package/dist/mailtemplates/scheduled-execution-failed/scheduled-execution-failed.html.mustache +83 -202
- package/dist/mailtemplates/scheduled-execution-failed/scheduled-execution-failed.plain.mustache +0 -1
- package/dist/migrations/20240108151652-add-daily-metrics.d.ts +3 -0
- package/dist/migrations/20240108151652-add-daily-metrics.d.ts.map +1 -0
- package/dist/migrations/20240108151652-add-daily-metrics.js +40 -0
- package/dist/migrations/20240108151652-add-daily-metrics.js.map +1 -0
- package/dist/migrations/20240109093021-incoming-webhooks-description.d.ts +3 -0
- package/dist/migrations/20240109093021-incoming-webhooks-description.d.ts.map +1 -0
- package/dist/migrations/20240109093021-incoming-webhooks-description.js +10 -0
- package/dist/migrations/20240109093021-incoming-webhooks-description.js.map +1 -0
- package/dist/migrations/20240109095348-add-reason-column-to-schedule.d.ts +3 -0
- package/dist/migrations/20240109095348-add-reason-column-to-schedule.d.ts.map +1 -0
- package/dist/migrations/20240109095348-add-reason-column-to-schedule.js +9 -0
- package/dist/migrations/20240109095348-add-reason-column-to-schedule.js.map +1 -0
- package/dist/migrations/20240111075911-update-system-user-email.d.ts +3 -0
- package/dist/migrations/20240111075911-update-system-user-email.d.ts.map +1 -0
- package/dist/migrations/20240111075911-update-system-user-email.js +8 -0
- package/dist/migrations/20240111075911-update-system-user-email.js.map +1 -0
- package/dist/migrations/20240111125100-automated-actions.d.ts +3 -0
- package/dist/migrations/20240111125100-automated-actions.d.ts.map +1 -0
- package/dist/migrations/20240111125100-automated-actions.js +39 -0
- package/dist/migrations/20240111125100-automated-actions.js.map +1 -0
- package/dist/migrations/20240116104456-drop-unused-column-permissionid.d.ts +3 -0
- package/dist/migrations/20240116104456-drop-unused-column-permissionid.d.ts.map +1 -0
- package/dist/migrations/20240116104456-drop-unused-column-permissionid.js +14 -0
- package/dist/migrations/20240116104456-drop-unused-column-permissionid.js.map +1 -0
- package/dist/migrations/20240116154700-unleash-admin-token-user.d.ts +3 -0
- package/dist/migrations/20240116154700-unleash-admin-token-user.d.ts.map +1 -0
- package/dist/migrations/20240116154700-unleash-admin-token-user.js +15 -0
- package/dist/migrations/20240116154700-unleash-admin-token-user.js.map +1 -0
- package/dist/migrations/20240117093601-add-more-granular-project-permissions.d.ts +3 -0
- package/dist/migrations/20240117093601-add-more-granular-project-permissions.d.ts.map +1 -0
- package/dist/migrations/20240117093601-add-more-granular-project-permissions.js +27 -0
- package/dist/migrations/20240117093601-add-more-granular-project-permissions.js.map +1 -0
- package/dist/migrations/20240118093611-missing-primary-keys.d.ts +3 -0
- package/dist/migrations/20240118093611-missing-primary-keys.d.ts.map +1 -0
- package/dist/migrations/20240118093611-missing-primary-keys.js +17 -0
- package/dist/migrations/20240118093611-missing-primary-keys.js.map +1 -0
- package/dist/migrations/20240119171200-action-states.d.ts +3 -0
- package/dist/migrations/20240119171200-action-states.d.ts.map +1 -0
- package/dist/migrations/20240119171200-action-states.js +23 -0
- package/dist/migrations/20240119171200-action-states.js.map +1 -0
- package/dist/migrations/20240124123000-add-enabled-to-action-sets.d.ts +3 -0
- package/dist/migrations/20240124123000-add-enabled-to-action-sets.d.ts.map +1 -0
- package/dist/migrations/20240124123000-add-enabled-to-action-sets.js +12 -0
- package/dist/migrations/20240124123000-add-enabled-to-action-sets.js.map +1 -0
- package/dist/migrations/20240125084701-add-user-trends.d.ts +3 -0
- package/dist/migrations/20240125084701-add-user-trends.d.ts.map +1 -0
- package/dist/migrations/20240125084701-add-user-trends.js +14 -0
- package/dist/migrations/20240125084701-add-user-trends.js.map +1 -0
- package/dist/migrations/20240125085703-users-table-increae-image-url-size.d.ts +3 -0
- package/dist/migrations/20240125085703-users-table-increae-image-url-size.d.ts.map +1 -0
- package/dist/migrations/20240125085703-users-table-increae-image-url-size.js +14 -0
- package/dist/migrations/20240125085703-users-table-increae-image-url-size.js.map +1 -0
- package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.d.ts +3 -0
- package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.d.ts.map +1 -0
- package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.js +18 -0
- package/dist/migrations/20240125090553-events-fix-incorrectly-assigned-sysuser-id.js.map +1 -0
- package/dist/migrations/20240125100000-events-system-user-old2new.d.ts +3 -0
- package/dist/migrations/20240125100000-events-system-user-old2new.d.ts.map +1 -0
- package/dist/migrations/20240125100000-events-system-user-old2new.js +10 -0
- package/dist/migrations/20240125100000-events-system-user-old2new.js.map +1 -0
- package/dist/migrations/20240126095544-add-flag-trends.d.ts +3 -0
- package/dist/migrations/20240126095544-add-flag-trends.d.ts.map +1 -0
- package/dist/migrations/20240126095544-add-flag-trends.js +17 -0
- package/dist/migrations/20240126095544-add-flag-trends.js.map +1 -0
- package/dist/migrations/20240130104757-flag-trends-health-time-to-production.d.ts +3 -0
- package/dist/migrations/20240130104757-flag-trends-health-time-to-production.d.ts.map +1 -0
- package/dist/migrations/20240130104757-flag-trends-health-time-to-production.js +14 -0
- package/dist/migrations/20240130104757-flag-trends-health-time-to-production.js.map +1 -0
- package/dist/migrator.js +1 -1
- package/dist/migrator.js.map +1 -1
- package/dist/server-dev.js +2 -3
- package/dist/server-dev.js.map +1 -1
- package/dist/test/arbitraries.test.d.ts +2 -2
- package/dist/test/arbitraries.test.d.ts.map +1 -1
- package/dist/test/config/test-config.d.ts.map +1 -1
- package/dist/test/config/test-config.js +1 -0
- package/dist/test/config/test-config.js.map +1 -1
- package/dist/test/e2e/api/admin/addon.e2e.test.js +1 -1
- package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +102 -0
- package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/api-token.e2e.test.js +6 -0
- package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/constraints.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/context.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/event.e2e.test.js +5 -1
- package/dist/test/e2e/api/admin/event.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/favorites.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/feature-type.test.js.map +1 -1
- package/dist/test/e2e/api/admin/feature.auth.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/feature.custom-auth.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/feedback.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/instance-admin.e2e.test.js +10 -4
- package/dist/test/e2e/api/admin/instance-admin.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/api-token.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/project.health.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/public-signup-token.e2e.test.js +3 -7
- package/dist/test/e2e/api/admin/public-signup-token.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/segment.e2e.test.js +2 -5
- package/dist/test/e2e/api/admin/segment.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/splash.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/strategy.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/tags.e2e.test.js +1 -1
- package/dist/test/e2e/api/admin/tags.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/user/pat.e2e.test.js +1 -1
- package/dist/test/e2e/api/admin/user/pat.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/user/user.test.js.map +1 -1
- package/dist/test/e2e/api/admin/user-admin.e2e.test.js +1 -1
- package/dist/test/e2e/api/admin/user-admin.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/auth/reset-password-controller.e2e.test.js +1 -1
- package/dist/test/e2e/api/auth/reset-password-controller.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/auth/simple-password-provider.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/metrics.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/metricsV2.e2e.test.js +7 -6
- package/dist/test/e2e/api/client/metricsV2.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/register.e2e.test.js +1 -0
- package/dist/test/e2e/api/client/register.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/segment.e2e.test.js +1 -3
- package/dist/test/e2e/api/client/segment.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/openapi/openapi.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/proxy/proxy.e2e.test.js +84 -14
- package/dist/test/e2e/api/proxy/proxy.e2e.test.js.map +1 -1
- package/dist/test/e2e/custom-auth.test.js.map +1 -1
- package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.d.ts +2 -0
- package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.d.ts.map +1 -0
- package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.js +223 -0
- package/dist/test/e2e/features-created-by-user-id-data-migration.e2e.test.js.map +1 -0
- package/dist/test/e2e/health.e2e.test.js.map +1 -1
- package/dist/test/e2e/helpers/app.utils.d.ts +1 -1
- package/dist/test/e2e/helpers/app.utils.d.ts.map +1 -1
- package/dist/test/e2e/helpers/database-init.d.ts +1 -1
- package/dist/test/e2e/helpers/database-init.d.ts.map +1 -1
- package/dist/test/e2e/helpers/database-init.js +2 -0
- package/dist/test/e2e/helpers/database-init.js.map +1 -1
- package/dist/test/e2e/helpers/test-helper.d.ts +4 -2
- package/dist/test/e2e/helpers/test-helper.d.ts.map +1 -1
- package/dist/test/e2e/helpers/test-helper.js.map +1 -1
- package/dist/test/e2e/migrator.e2e.test.js +27 -1
- package/dist/test/e2e/migrator.e2e.test.js.map +1 -1
- package/dist/test/e2e/routes/routes.test.js.map +1 -1
- package/dist/test/e2e/services/access-service.e2e.test.js +26 -8
- package/dist/test/e2e/services/access-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/addon-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/group-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/playground-service.test.d.ts +2 -2
- package/dist/test/e2e/services/playground-service.test.d.ts.map +1 -1
- package/dist/test/e2e/services/playground-service.test.js +7 -6
- package/dist/test/e2e/services/playground-service.test.js.map +1 -1
- package/dist/test/e2e/services/project-health-service.e2e.test.js +0 -5
- package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/reset-token-service.e2e.test.js +6 -6
- package/dist/test/e2e/services/reset-token-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/session-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/setting-service.test.js.map +1 -1
- package/dist/test/e2e/services/state-service.e2e.test.js +9 -7
- package/dist/test/e2e/services/state-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/user-service.e2e.test.js +48 -1
- package/dist/test/e2e/services/user-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/client-application-store.e2e.test.js +6 -2
- package/dist/test/e2e/stores/client-application-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/feature-environment-store.e2e.test.js +76 -0
- package/dist/test/e2e/stores/feature-environment-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/feature-tag-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/feature-toggle-client-store.e2e.test.js +1 -1
- package/dist/test/e2e/stores/feature-toggle-client-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/feature-type-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/project-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/setting-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/user-feedback-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/user-splash-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/user-store.e2e.test.js +4 -3
- package/dist/test/e2e/stores/user-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/system-user-migration.test.js +1 -1
- package/dist/test/fixtures/fake-access-store.d.ts +1 -1
- package/dist/test/fixtures/fake-access-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-access-store.js.map +1 -1
- package/dist/test/fixtures/fake-client-instance-store.d.ts +1 -0
- package/dist/test/fixtures/fake-client-instance-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-client-instance-store.js +3 -0
- package/dist/test/fixtures/fake-client-instance-store.js.map +1 -1
- package/dist/test/fixtures/fake-event-store.d.ts +2 -1
- package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-event-store.js +3 -0
- package/dist/test/fixtures/fake-event-store.js.map +1 -1
- package/dist/test/fixtures/fake-favorite-features-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-favorite-features-store.js.map +1 -1
- package/dist/test/fixtures/fake-favorite-projects-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-favorite-projects-store.js.map +1 -1
- package/dist/test/fixtures/fake-project-stats-store.d.ts +2 -2
- package/dist/test/fixtures/fake-project-stats-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-project-store.d.ts +1 -1
- package/dist/test/fixtures/fake-project-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-project-store.js +8 -1
- package/dist/test/fixtures/fake-project-store.js.map +1 -1
- package/dist/test/fixtures/fake-role-store.d.ts +4 -4
- package/dist/test/fixtures/fake-role-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-strategies-store.js +1 -1
- package/dist/test/fixtures/fake-strategies-store.js.map +1 -1
- package/dist/test/fixtures/store.js +2 -2
- package/dist/test/fixtures/store.js.map +1 -1
- package/frontend/build/index.html +2 -2
- package/frontend/build/static/AdvancedPlayground-DoQ1u8B6.js +4 -0
- package/frontend/build/static/{CreateProject-aN-UGdcb.js → CreateProject-iLBz5afO.js} +2 -2
- package/frontend/build/static/{FeatureArchiveDialog-eHyhx7Yo.js → FeatureArchiveDialog-NSAcrt7Z.js} +2 -2
- package/frontend/build/static/FeatureMetricsChart-UhDepK_o.js +2 -0
- package/frontend/build/static/FeatureViewLazyExport-SpKYIb_J.js +25 -0
- package/frontend/build/static/LazyAdminExport-w5iLam_A.js +44 -0
- package/frontend/build/static/LazyProjectExport-iqGbEmyw.js +27 -0
- package/frontend/build/static/LineChartComponent-rG1KLVNr.js +1 -0
- package/frontend/build/static/NetworkOverview-7SCGp57r.js +1304 -0
- package/frontend/build/static/NetworkTraffic-awTd8Zg5.js +1 -0
- package/frontend/build/static/ReactJSONEditor-N-DWXE0h.js +106 -0
- package/frontend/build/static/RoleCell-mJ7DV61l.js +1 -0
- package/frontend/build/static/{StrategyItemContainer-JoMPKX3L.js → StrategyItemContainer-wxQbaPXr.js} +1 -1
- package/frontend/build/static/changeRequestProcessWithSchedule-ZryCFkCp.svg +1 -0
- package/frontend/build/static/{flowchart-elk-definition-170a3958-NkZoK_zv.js → flowchart-elk-definition-170a3958-fa48ti80.js} +2 -2
- package/frontend/build/static/index-TzAeUmk4.js +10 -0
- package/frontend/build/static/index-p2PlVFLf.js +524 -0
- package/frontend/build/static/index-pAMHRYpv.js +1 -0
- package/frontend/build/static/is_dark-aAyqOy_I.js +1 -0
- package/frontend/build/static/{mindmap-definition-44684416-obuYUG0L.js → mindmap-definition-44684416-AfCKDD9v.js} +2 -2
- package/frontend/build/static/{style-gSb9cHBe.css → style-4Ai58kIl.css} +1 -1
- package/frontend/build/static/{timeline-definition-8e5a9bc6-33WsNwwr.js → timeline-definition-8e5a9bc6-NKNlIEgm.js} +2 -2
- package/frontend/build/static/uniqueId-ebLYlRiD.js +1 -0
- package/frontend/build/static/{unknownify-YD2Teyht.js → unknownify-g-QgUElr.js} +1 -1
- package/frontend/build/static/{useApiTokens-XTOY616x.js → useApiTokens-hvnEZWgJ.js} +1 -1
- package/frontend/build/static/{useProjectForm--jxh4Dtm.js → useProjectForm-zqz6LJw4.js} +1 -1
- package/frontend/build/static/vanilla-picker-P0dws0ou.js +8 -0
- package/frontend/package.json +32 -23
- package/package.json +10 -10
- package/dist/lib/db/client-metrics-store-v2.d.ts.map +0 -1
- package/dist/lib/db/client-metrics-store-v2.js +0 -173
- package/dist/lib/db/client-metrics-store-v2.js.map +0 -1
- package/dist/lib/db/event-store.test.d.ts.map +0 -1
- package/dist/lib/db/event-store.test.js.map +0 -1
- package/dist/lib/routes/admin-api/client-metrics.d.ts.map +0 -1
- package/dist/lib/routes/client-api/metrics.d.ts.map +0 -1
- package/dist/lib/routes/client-api/metrics.js.map +0 -1
- package/dist/lib/routes/client-api/metrics.test.d.ts.map +0 -1
- package/dist/lib/routes/client-api/metrics.test.js.map +0 -1
- package/dist/lib/routes/client-api/register.d.ts.map +0 -1
- package/dist/lib/routes/client-api/register.js.map +0 -1
- package/dist/lib/routes/client-api/register.test.d.ts.map +0 -1
- package/dist/lib/routes/client-api/register.test.js.map +0 -1
- package/dist/lib/services/client-metrics/instance-service.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/instance-service.js.map +0 -1
- package/dist/lib/services/client-metrics/instance-service.test.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/instance-service.test.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/createLastSeenService.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/createLastSeenService.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/fake-last-seen-read-model.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/fake-last-seen-read-model.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/fake-last-seen-store.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/fake-last-seen-store.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/last-seen-read-model.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/last-seen-read-model.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/last-seen-service.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/last-seen-service.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/last-seen-store.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/last-seen-store.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.e2e.test.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.e2e.test.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.test.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/tests/last-seen-service.test.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/types/last-seen-read-model-type.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/types/last-seen-read-model-type.js.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/types/last-seen-store-type.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/last-seen/types/last-seen-store-type.js.map +0 -1
- package/dist/lib/services/client-metrics/metrics-service-v2.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/metrics-service-v2.js.map +0 -1
- package/dist/lib/services/client-metrics/metrics-service-v2.test.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/metrics-service-v2.test.js +0 -99
- package/dist/lib/services/client-metrics/metrics-service-v2.test.js.map +0 -1
- package/dist/lib/services/client-metrics/models.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/models.js.map +0 -1
- package/dist/lib/services/client-metrics/schema.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/schema.js.map +0 -1
- package/dist/lib/services/client-metrics/schema.test.d.ts.map +0 -1
- package/dist/lib/services/client-metrics/schema.test.js.map +0 -1
- package/dist/lib/types/stores/client-metrics-store-v2.d.ts.map +0 -1
- package/dist/lib/types/stores/client-metrics-store-v2.js.map +0 -1
- package/dist/lib/util/collapseHourlyMetrics.d.ts.map +0 -1
- package/dist/lib/util/collapseHourlyMetrics.js.map +0 -1
- package/dist/lib/util/collapseHourlyMetrics.test.d.ts.map +0 -1
- package/dist/lib/util/collapseHourlyMetrics.test.js.map +0 -1
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.d.ts.map +0 -1
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +0 -1
- package/dist/test/e2e/services/client-metrics-service.e2e.test.d.ts.map +0 -1
- package/dist/test/e2e/services/client-metrics-service.e2e.test.js.map +0 -1
- package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.d.ts.map +0 -1
- package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.js.map +0 -1
- package/dist/test/fixtures/fake-client-metrics-store-v2.d.ts.map +0 -1
- package/dist/test/fixtures/fake-client-metrics-store-v2.js.map +0 -1
- package/frontend/build/static/AdvancedPlayground-FxfPUa2V.js +0 -13
- package/frontend/build/static/FeatureMetricsChart-ExGq1eXl.js +0 -2
- package/frontend/build/static/FeatureViewLazyExport-S8mj8m0z.js +0 -25
- package/frontend/build/static/LazyAdminExport-fpVZFnP9.js +0 -44
- package/frontend/build/static/LazyProjectExport-_QSE5C5m.js +0 -25
- package/frontend/build/static/NetworkOverview-ylTzmeDg.js +0 -1304
- package/frontend/build/static/NetworkTraffic-qj5h7JRk.js +0 -1
- package/frontend/build/static/ReactJSONEditor-E59dRBYR.js +0 -129
- package/frontend/build/static/RoleCell-TGTVkKHO.js +0 -1
- package/frontend/build/static/chartjs-adapter-date-fns.esm-JSlDxtwH.js +0 -23
- package/frontend/build/static/index-JVRlSBvr.js +0 -501
- package/frontend/build/static/is_dark-gjUQW15t.js +0 -1
- /package/dist/lib/{db → features/events}/event-store.test.d.ts +0 -0
- /package/dist/{test/e2e/services → lib/features/metrics/client-metrics}/client-metrics-service.e2e.test.d.ts +0 -0
- /package/dist/{test/e2e/stores → lib/features/metrics/client-metrics}/client-metrics-store-v2.e2e.test.d.ts +0 -0
- /package/dist/{test/e2e/api/admin → lib/features/metrics/client-metrics}/client-metrics.e2e.test.d.ts +0 -0
- /package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.js +0 -0
- /package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.test.d.ts +0 -0
- /package/dist/lib/{util → features/metrics/client-metrics}/collapseHourlyMetrics.test.js +0 -0
- /package/dist/lib/{services → features/metrics}/client-metrics/metrics-service-v2.test.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics/instance}/instance-service.test.d.ts +0 -0
- /package/dist/lib/{routes/client-api → features/metrics/instance}/metrics.test.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics/instance}/models.js +0 -0
- /package/dist/lib/{routes/client-api → features/metrics/instance}/register.test.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/createLastSeenService.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-read-model.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-read-model.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-store.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/fake-last-seen-store.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-read-model.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-read-model.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-service.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/last-seen-store.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.e2e.test.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.e2e.test.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.test.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/tests/last-seen-service.test.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-read-model-type.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-read-model-type.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-store-type.d.ts +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics}/last-seen/types/last-seen-store-type.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.js +0 -0
- /package/dist/lib/{services/client-metrics → features/metrics/shared}/schema.test.d.ts +0 -0
- /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 @@
|
|
|
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":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
|
-
import Controller from '
|
|
3
|
-
import { IUnleashConfig } from '
|
|
4
|
-
import { IUnleashServices } from '
|
|
5
|
-
import { FeatureUsageSchema } from '
|
|
6
|
-
import { FeatureMetricsSchema } from '
|
|
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":""}
|
package/dist/{test/e2e/api/admin → lib/features/metrics/client-metrics}/client-metrics.e2e.test.js
RENAMED
|
@@ -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("
|
|
7
|
-
const test_helper_1 = require("
|
|
8
|
-
const no_logger_1 = __importDefault(require("
|
|
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(
|
|
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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"}
|