unleash-server 7.5.1 → 7.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/addons/feature-event-formatter-md-events.d.ts.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md-events.js +16 -1
- package/dist/lib/addons/feature-event-formatter-md-events.js.map +1 -1
- package/dist/lib/addons/slack-app-definition.d.ts.map +1 -1
- package/dist/lib/addons/slack-app-definition.js +4 -1
- package/dist/lib/addons/slack-app-definition.js.map +1 -1
- package/dist/lib/app.d.ts.map +1 -1
- package/dist/lib/app.js +11 -25
- 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 -0
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/db/api-token-store.d.ts +4 -1
- package/dist/lib/db/api-token-store.d.ts.map +1 -1
- package/dist/lib/db/api-token-store.js +17 -3
- package/dist/lib/db/api-token-store.js.map +1 -1
- package/dist/lib/error/bad-gateway-error.d.ts +7 -0
- package/dist/lib/error/bad-gateway-error.d.ts.map +1 -0
- package/dist/lib/error/bad-gateway-error.js +9 -0
- package/dist/lib/error/bad-gateway-error.js.map +1 -0
- package/dist/lib/error/gateway-timeout-error.d.ts +7 -0
- package/dist/lib/error/gateway-timeout-error.d.ts.map +1 -0
- package/dist/lib/error/gateway-timeout-error.js +9 -0
- package/dist/lib/error/gateway-timeout-error.js.map +1 -0
- package/dist/lib/error/index.d.ts +3 -1
- package/dist/lib/error/index.d.ts.map +1 -1
- package/dist/lib/error/index.js +3 -1
- package/dist/lib/error/index.js.map +1 -1
- package/dist/lib/error/unleash-error.d.ts +1 -1
- package/dist/lib/error/unleash-error.d.ts.map +1 -1
- package/dist/lib/error/unleash-error.js +2 -0
- package/dist/lib/error/unleash-error.js.map +1 -1
- package/dist/lib/events/index.d.ts +4 -1
- package/dist/lib/events/index.d.ts.map +1 -1
- package/dist/lib/events/index.js +6 -0
- package/dist/lib/events/index.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js +5 -0
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts +2 -0
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts.map +1 -0
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js +53 -0
- package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js.map +1 -0
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js +5 -0
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts +2 -0
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts.map +1 -0
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js +59 -0
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js.map +1 -0
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts +9 -3
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js +165 -92
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js +475 -1
- package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/delta-cache.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/delta-cache.js +3 -0
- package/dist/lib/features/client-feature-toggles/delta/delta-cache.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js +15 -0
- package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts +3 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts.map +1 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.js +16 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.js.map +1 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts +2 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts.map +1 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js +25 -0
- package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js.map +1 -0
- package/dist/lib/features/context/context.d.ts +0 -1
- package/dist/lib/features/context/context.d.ts.map +1 -1
- package/dist/lib/features/context/context.js +7 -15
- package/dist/lib/features/context/context.js.map +1 -1
- package/dist/lib/features/edgetokens/edge-token-store.d.ts +2 -0
- package/dist/lib/features/edgetokens/edge-token-store.d.ts.map +1 -1
- package/dist/lib/features/edgetokens/edge-token-store.js +20 -0
- package/dist/lib/features/edgetokens/edge-token-store.js.map +1 -1
- package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts +2 -0
- package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts.map +1 -1
- package/dist/lib/features/edgetokens/fake-edge-token-store.js +6 -0
- package/dist/lib/features/edgetokens/fake-edge-token-store.js.map +1 -1
- package/dist/lib/features/events/event-store.d.ts +2 -4
- package/dist/lib/features/events/event-store.d.ts.map +1 -1
- package/dist/lib/features/events/event-store.js +1 -4
- package/dist/lib/features/events/event-store.js.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 +2 -1
- package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
- package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-service.js +5 -0
- package/dist/lib/features/feature-search/feature-search-service.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 +17 -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 +56 -1
- package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts +1 -2
- package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/configuration-revision-service.js +2 -10
- package/dist/lib/features/feature-toggle/configuration-revision-service.js.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js +3 -2
- package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js.map +1 -1
- package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts +1 -0
- package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api-service.js +8 -0
- package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api.e2e.test.js +43 -0
- package/dist/lib/features/frontend-api/frontend-api.e2e.test.js.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts +3 -0
- package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts.map +1 -0
- package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js +1071 -0
- package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js.map +1 -0
- package/dist/lib/features/index.d.ts +1 -0
- package/dist/lib/features/index.d.ts.map +1 -1
- package/dist/lib/features/index.js +1 -0
- package/dist/lib/features/index.js.map +1 -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 +1 -3
- package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
- package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js +12 -12
- package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js.map +1 -1
- package/dist/lib/features/metrics/impact/metrics-translator.d.ts +5 -2
- package/dist/lib/features/metrics/impact/metrics-translator.d.ts.map +1 -1
- package/dist/lib/features/metrics/impact/metrics-translator.js +86 -102
- package/dist/lib/features/metrics/impact/metrics-translator.js.map +1 -1
- package/dist/lib/features/metrics/impact/metrics-translator.test.js +70 -112
- package/dist/lib/features/metrics/impact/metrics-translator.test.js.map +1 -1
- package/dist/lib/features/project/createProjectService.d.ts.map +1 -1
- package/dist/lib/features/project/createProjectService.js +6 -0
- package/dist/lib/features/project/createProjectService.js.map +1 -1
- package/dist/lib/features/project/project-service.d.ts +2 -1
- package/dist/lib/features/project/project-service.d.ts.map +1 -1
- package/dist/lib/features/project/project-service.js +3 -1
- package/dist/lib/features/project/project-service.js.map +1 -1
- package/dist/lib/features/project-environments/project-environments.e2e.test.js +37 -0
- package/dist/lib/features/project-environments/project-environments.e2e.test.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.d.ts.map +1 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js +2 -5
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js +2 -2
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts +2 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts.map +1 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js +20 -3
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts +2 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts.map +1 -1
- package/dist/lib/features/release-plans/release-plan-store.d.ts.map +1 -1
- package/dist/lib/features/release-plans/release-plan-store.js +2 -0
- package/dist/lib/features/release-plans/release-plan-store.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-template-store.d.ts.map +1 -1
- package/dist/lib/features/release-plans/release-plan-template-store.js +4 -3
- package/dist/lib/features/release-plans/release-plan-template-store.js.map +1 -1
- package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts +2 -0
- package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts.map +1 -0
- package/dist/lib/features/release-plans/release-plan-template-store.test.js +47 -0
- package/dist/lib/features/release-plans/release-plan-template-store.test.js.map +1 -0
- package/dist/lib/metric-events.d.ts +3 -2
- package/dist/lib/metric-events.d.ts.map +1 -1
- package/dist/lib/metric-events.js +2 -1
- package/dist/lib/metric-events.js.map +1 -1
- package/dist/lib/middleware/api-token-middleware.d.ts.map +1 -1
- package/dist/lib/middleware/api-token-middleware.js +1 -5
- package/dist/lib/middleware/api-token-middleware.js.map +1 -1
- package/dist/lib/middleware/api-token-middleware.test.js +35 -25
- package/dist/lib/middleware/api-token-middleware.test.js.map +1 -1
- package/dist/lib/middleware/backend-token-middleware.d.ts +5 -0
- package/dist/lib/middleware/backend-token-middleware.d.ts.map +1 -0
- package/dist/lib/middleware/backend-token-middleware.js +61 -0
- package/dist/lib/middleware/backend-token-middleware.js.map +1 -0
- package/dist/lib/middleware/backend-token-middleware.test.d.ts +2 -0
- package/dist/lib/middleware/backend-token-middleware.test.d.ts.map +1 -0
- package/dist/lib/middleware/backend-token-middleware.test.js +73 -0
- package/dist/lib/middleware/backend-token-middleware.test.js.map +1 -0
- package/dist/lib/middleware/conditional-middleware.d.ts +20 -0
- package/dist/lib/middleware/conditional-middleware.d.ts.map +1 -1
- package/dist/lib/middleware/conditional-middleware.js +26 -0
- package/dist/lib/middleware/conditional-middleware.js.map +1 -1
- package/dist/lib/middleware/conditional-middleware.test.d.ts +2 -0
- package/dist/lib/middleware/conditional-middleware.test.d.ts.map +1 -0
- package/dist/lib/middleware/conditional-middleware.test.js +31 -0
- package/dist/lib/middleware/conditional-middleware.test.js.map +1 -0
- package/dist/lib/middleware/frontend-token-middleware.d.ts +5 -0
- package/dist/lib/middleware/frontend-token-middleware.d.ts.map +1 -0
- package/dist/lib/middleware/frontend-token-middleware.js +61 -0
- package/dist/lib/middleware/frontend-token-middleware.js.map +1 -0
- package/dist/lib/middleware/user-token-client-api-logger-middleware.js +1 -1
- package/dist/lib/middleware/user-token-client-api-logger-middleware.js.map +1 -1
- package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/event-search-response-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/export-result-schema.d.ts +1018 -100
- package/dist/lib/openapi/spec/export-result-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/export-result-schema.js +4 -2
- package/dist/lib/openapi/spec/export-result-schema.js.map +1 -1
- package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts +168 -0
- package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js +66 -0
- package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js.map +1 -0
- package/dist/lib/openapi/spec/feature-environment-schema.d.ts +265 -7
- package/dist/lib/openapi/spec/feature-environment-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-environment-schema.js +13 -0
- package/dist/lib/openapi/spec/feature-environment-schema.js.map +1 -1
- package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/feature-schema.d.ts +475 -16
- package/dist/lib/openapi/spec/feature-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-schema.js +4 -2
- package/dist/lib/openapi/spec/feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts +688 -14
- package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-search-environment-schema.js +8 -0
- package/dist/lib/openapi/spec/feature-search-environment-schema.js.map +1 -1
- package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +10 -1
- package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-search-query-parameters.js +10 -0
- package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
- package/dist/lib/openapi/spec/feature-search-response-schema.d.ts +8097 -155
- package/dist/lib/openapi/spec/feature-search-response-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-search-response-schema.js +22 -0
- package/dist/lib/openapi/spec/feature-search-response-schema.js.map +1 -1
- package/dist/lib/openapi/spec/health-overview-schema.d.ts +1336 -210
- package/dist/lib/openapi/spec/health-overview-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/health-overview-schema.js +8 -0
- package/dist/lib/openapi/spec/health-overview-schema.js.map +1 -1
- package/dist/lib/openapi/spec/health-report-schema.d.ts +1336 -210
- package/dist/lib/openapi/spec/health-report-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/import-toggles-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/import-toggles-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/import-toggles-schema.js +4 -2
- package/dist/lib/openapi/spec/import-toggles-schema.js.map +1 -1
- package/dist/lib/openapi/spec/index.d.ts +4 -2
- package/dist/lib/openapi/spec/index.d.ts.map +1 -1
- package/dist/lib/openapi/spec/index.js +4 -2
- package/dist/lib/openapi/spec/index.js.map +1 -1
- package/dist/lib/openapi/spec/integration-event-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/integration-events-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/metric-query-schema.d.ts +6 -0
- package/dist/lib/openapi/spec/metric-query-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/metric-query-schema.js +6 -0
- package/dist/lib/openapi/spec/metric-query-schema.js.map +1 -1
- package/dist/lib/openapi/spec/profile-schema.d.ts +475 -16
- package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/project-overview-schema.d.ts +1336 -210
- package/dist/lib/openapi/spec/project-overview-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/project-overview-schema.js +8 -0
- package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
- package/dist/lib/openapi/spec/release-plan-milestone-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js +1 -1
- package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js.map +1 -1
- package/dist/lib/openapi/spec/{safeguard-schema.d.ts → release-plan-safeguard-schema.d.ts} +16 -4
- package/dist/lib/openapi/spec/release-plan-safeguard-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/{safeguard-schema.js → release-plan-safeguard-schema.js} +3 -3
- package/dist/lib/openapi/spec/release-plan-safeguard-schema.js.map +1 -0
- package/dist/lib/openapi/spec/release-plan-schema.d.ts +23 -5
- package/dist/lib/openapi/spec/release-plan-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/release-plan-schema.js +3 -3
- package/dist/lib/openapi/spec/release-plan-schema.js.map +1 -1
- package/dist/lib/openapi/spec/release-plan-template-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts +2897 -0
- package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/release-plan-templates-schema.js +29 -0
- package/dist/lib/openapi/spec/release-plan-templates-schema.js.map +1 -0
- package/dist/lib/openapi/spec/release-plans-schema.d.ts +45 -9
- package/dist/lib/openapi/spec/release-plans-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/release-plans-schema.js +2 -2
- package/dist/lib/openapi/spec/release-plans-schema.js.map +1 -1
- package/dist/lib/openapi/spec/search-features-schema.d.ts +13694 -5078
- package/dist/lib/openapi/spec/search-features-schema.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/api-token.js +1 -1
- package/dist/lib/routes/admin-api/api-token.js.map +1 -1
- package/dist/lib/routes/admin-api/project/api-token.js +1 -1
- package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
- package/dist/lib/routes/logout.js +1 -1
- package/dist/lib/routes/logout.js.map +1 -1
- package/dist/lib/routes/logout.test.js +4 -4
- package/dist/lib/routes/logout.test.js.map +1 -1
- package/dist/lib/schema/api-token-schema.d.ts.map +1 -1
- package/dist/lib/schema/api-token-schema.js +1 -0
- package/dist/lib/schema/api-token-schema.js.map +1 -1
- package/dist/lib/server-impl.d.ts +5 -5
- package/dist/lib/server-impl.d.ts.map +1 -1
- package/dist/lib/server-impl.js +3 -3
- package/dist/lib/server-impl.js.map +1 -1
- package/dist/lib/services/api-token-service.d.ts +2 -2
- package/dist/lib/services/api-token-service.d.ts.map +1 -1
- package/dist/lib/services/api-token-service.js +5 -3
- package/dist/lib/services/api-token-service.js.map +1 -1
- package/dist/lib/services/api-token-service.test.js +5 -4
- package/dist/lib/services/api-token-service.test.js.map +1 -1
- package/dist/lib/services/edge-service.d.ts +1 -0
- package/dist/lib/services/edge-service.d.ts.map +1 -1
- package/dist/lib/services/edge-service.js +5 -2
- package/dist/lib/services/edge-service.js.map +1 -1
- package/dist/lib/services/user-service.d.ts.map +1 -1
- package/dist/lib/services/user-service.js +0 -4
- package/dist/lib/services/user-service.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 +7 -8
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/lib/types/model.d.ts +2 -1
- package/dist/lib/types/model.d.ts.map +1 -1
- package/dist/lib/types/model.js.map +1 -1
- package/dist/lib/types/option.d.ts +2 -0
- package/dist/lib/types/option.d.ts.map +1 -1
- package/dist/lib/types/stores/api-token-store.d.ts +2 -1
- package/dist/lib/types/stores/api-token-store.d.ts.map +1 -1
- package/dist/lib/types/stores/edge-store.d.ts +2 -0
- package/dist/lib/types/stores/edge-store.d.ts.map +1 -1
- package/dist/lib/types/stores/event-store.d.ts +1 -1
- package/dist/lib/types/stores/event-store.d.ts.map +1 -1
- package/dist/lib/util/clone-db-config.d.ts +3 -0
- package/dist/lib/util/clone-db-config.d.ts.map +1 -0
- package/dist/lib/util/clone-db-config.js +18 -0
- package/dist/lib/util/clone-db-config.js.map +1 -0
- package/dist/lib/util/clone-db-config.test.d.ts +2 -0
- package/dist/lib/util/clone-db-config.test.d.ts.map +1 -0
- package/dist/lib/util/clone-db-config.test.js +40 -0
- package/dist/lib/util/clone-db-config.test.js.map +1 -0
- package/dist/lib/util/db-lock.d.ts.map +1 -1
- package/dist/lib/util/db-lock.js +2 -3
- package/dist/lib/util/db-lock.js.map +1 -1
- package/dist/lib/util/sortStrategies.d.ts +1 -1
- package/dist/lib/util/sortStrategies.d.ts.map +1 -1
- package/dist/lib/util/sortStrategies.js +6 -2
- package/dist/lib/util/sortStrategies.js.map +1 -1
- package/dist/lib/util/sortStrategies.test.js +21 -0
- package/dist/lib/util/sortStrategies.test.js.map +1 -1
- package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts +3 -0
- package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts.map +1 -0
- package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js +15 -0
- package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js.map +1 -0
- package/dist/migrations/20260310134100-split-safeguards-table.d.ts +3 -0
- package/dist/migrations/20260310134100-split-safeguards-table.d.ts.map +1 -0
- package/dist/migrations/20260310134100-split-safeguards-table.js +31 -0
- package/dist/migrations/20260310134100-split-safeguards-table.js.map +1 -0
- package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts +3 -0
- package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts.map +1 -0
- package/dist/migrations/20260311073041-migrate-safeguards-data.js +42 -0
- package/dist/migrations/20260311073041-migrate-safeguards-data.js.map +1 -0
- package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts +3 -0
- package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts.map +1 -0
- package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js +31 -0
- package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js.map +1 -0
- package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts +3 -0
- package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts.map +1 -0
- package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js +8 -0
- package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js.map +1 -0
- package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts +3 -0
- package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts.map +1 -0
- package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js +54 -0
- package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js.map +1 -0
- package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts +3 -0
- package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts.map +1 -0
- package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js +21 -0
- package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js.map +1 -0
- package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts +3 -0
- package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts.map +1 -0
- package/dist/migrations/20260318100000-safeguards-drop-project-column.js +14 -0
- package/dist/migrations/20260318100000-safeguards-drop-project-column.js.map +1 -0
- package/dist/migrations/20260406132537-user-access-requests.d.ts +3 -0
- package/dist/migrations/20260406132537-user-access-requests.d.ts.map +1 -0
- package/dist/migrations/20260406132537-user-access-requests.js +16 -0
- package/dist/migrations/20260406132537-user-access-requests.js.map +1 -0
- package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts +3 -0
- package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts.map +1 -0
- package/dist/migrations/20260406161629-user-access-requests-unique-email.js +14 -0
- package/dist/migrations/20260406161629-user-access-requests-unique-email.js.map +1 -0
- package/dist/migrator.d.ts.map +1 -1
- package/dist/migrator.js +4 -3
- package/dist/migrator.js.map +1 -1
- package/dist/server-dev.js +4 -7
- package/dist/server-dev.js.map +1 -1
- package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +5 -5
- 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 +3 -2
- package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js +106 -38
- package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js +1 -7
- package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/api-token.e2e.test.js +2 -1
- package/dist/test/e2e/api/admin/project/api-token.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js +5 -5
- package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project-context.e2e.test.js +1 -7
- package/dist/test/e2e/api/admin/project-context.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/feature.token.access.e2e.test.js +34 -1
- package/dist/test/e2e/api/client/feature.token.access.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/api-token-service.e2e.test.js +21 -6
- package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/edge-service.e2e.test.js +4 -3
- package/dist/test/e2e/services/edge-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/api-token-store.e2e.test.js +15 -14
- package/dist/test/e2e/stores/api-token-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/event-store.e2e.test.js +8 -9
- package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
- package/dist/test/fixtures/fake-api-token-store.d.ts +2 -1
- package/dist/test/fixtures/fake-api-token-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-api-token-store.js +4 -1
- package/dist/test/fixtures/fake-api-token-store.js.map +1 -1
- package/dist/test/fixtures/fake-event-store.d.ts +1 -1
- package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-event-store.js +1 -1
- package/dist/test/fixtures/fake-event-store.js.map +1 -1
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts +2 -2
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js +3 -2
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js.map +1 -1
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/AdvancedPlayground-BTPrG6RW.js +3 -0
- package/frontend/build/static/BackendConnections-CRh8Vxoe.js +1 -0
- package/frontend/build/static/{CreateProject-DV-Ad8Sn.js → CreateProject-DEMalH1j.js} +1 -1
- package/frontend/build/static/EnterpriseEdge-Cp-pGMa0.js +6 -0
- package/frontend/build/static/FeatureMetricsChart-DQOE71LA.js +2 -0
- package/frontend/build/static/FeatureStaleDialog-B6BfnDiQ.js +689 -0
- package/frontend/build/static/{FeatureViewLazyExport-Bsw7-knb.js → FeatureViewLazyExport-BkNTNFqK.js} +4 -7
- package/frontend/build/static/FlagMetricsChart-zYDF9bet.js +2 -0
- package/frontend/build/static/FrontendNetworkTrafficUsage-CbxdFXH7.js +1 -0
- package/frontend/build/static/GridLayoutWrapper-Cq6Bzm36.js +3 -0
- package/frontend/build/static/ImpactMetricsPage-CFYXYXPb.js +1 -0
- package/frontend/build/static/LazyAdminExport-ByTh4iFa.js +38 -0
- package/frontend/build/static/LazyProjectExport-K12Xy3w9.js +46 -0
- package/frontend/build/static/{LifecycleChartComponent-cxR-TN3V.js → LifecycleChartComponent-DHvlFNd2.js} +3 -3
- package/frontend/build/static/LineChartComponent-BlhKm3cw.js +1 -0
- package/frontend/build/static/MarkCompletedDialogue-apmlFjVY.js +1 -0
- package/frontend/build/static/{NetworkOverview-DxaPXUzZ.js → NetworkOverview-BiLOuQ4c.js} +1 -1
- package/frontend/build/static/{NetworkPrometheusAPIWarning-ltyTlXFF.js → NetworkPrometheusAPIWarning-CYo3j2Tj.js} +1 -1
- package/frontend/build/static/{NetworkTraffic-Dhw4yIBs.js → NetworkTraffic-DONL5oIx.js} +1 -1
- package/frontend/build/static/NetworkTrafficUsage-DjQiYq0S.js +1 -0
- package/frontend/build/static/{PercentageDonut-JGNh2FVZ.js → PercentageDonut-CA9hYg3v.js} +1 -1
- package/frontend/build/static/{ReactJSONEditor-GHl7KvdS.js → ReactJSONEditor-9cJL1vJY.js} +31 -31
- package/frontend/build/static/{RoleCell-CjVCxBgl.js → RoleCell-ZzU5Oqy8.js} +1 -1
- package/frontend/build/static/Safeguard-DY1N4aPz.js +1 -0
- package/frontend/build/static/aggregateFeatureMetrics-D6bHft_C.js +1 -0
- package/frontend/build/static/{formatTickValue-BZb4ZIL9.js → formatTickValue-BcLsqREh.js} +2 -2
- package/frontend/build/static/{index-DcWBU_a4.js → index-B87DWXbl.js} +1 -1
- package/frontend/build/static/index-CoLhlfXP.js +565 -0
- package/frontend/build/static/loginBackground-CQx0IRYc.png +0 -0
- package/frontend/build/static/{networkTrafficUsageHighlightPlugin-BbfAyDiQ.js → networkTrafficUsageHighlightPlugin-CqEM-cK_.js} +1 -1
- package/frontend/build/static/passwordSuccess-fcvTEYOw.png +0 -0
- package/frontend/build/static/useApiTokens-ClWvohC9.js +1 -0
- package/frontend/package.json +50 -42
- package/package.json +11 -10
- package/dist/lib/openapi/spec/safeguard-schema.d.ts.map +0 -1
- package/dist/lib/openapi/spec/safeguard-schema.js.map +0 -1
- package/frontend/build/static/AdvancedPlayground-CF0hkpiE.js +0 -3
- package/frontend/build/static/BackendConnections-DhZczar-.js +0 -1
- package/frontend/build/static/EnterpriseEdge-D1To2ugP.js +0 -3
- package/frontend/build/static/FeatureMetricsChart-D8sRgx5P.js +0 -2
- package/frontend/build/static/FeatureStaleDialog-DOkhgvaj.js +0 -7
- package/frontend/build/static/FlagMetricsChart-CF_kEyQa.js +0 -2
- package/frontend/build/static/FrontendNetworkTrafficUsage-C8zJSvoc.js +0 -1
- package/frontend/build/static/GridLayoutWrapper-DpJcUbQB.js +0 -3
- package/frontend/build/static/ImpactMetricsPage-KLVv-tP4.js +0 -1
- package/frontend/build/static/LazyAdminExport-CWQiknO-.js +0 -38
- package/frontend/build/static/LazyProjectExport-DsMn4Yxm.js +0 -728
- package/frontend/build/static/LineChartComponent-_yZEp3dd.js +0 -1
- package/frontend/build/static/MarkCompletedDialogue-DFtLyDN0.js +0 -1
- package/frontend/build/static/NetworkTrafficUsage-deKWRhIS.js +0 -1
- package/frontend/build/static/aggregateFeatureMetrics-YEdZNNoV.js +0 -1
- package/frontend/build/static/index-DMSjiFEm.js +0 -583
- package/frontend/build/static/useApiTokens-DBB3NvXL.js +0 -1
|
@@ -83,6 +83,41 @@ test('should add user if known token', async () => {
|
|
|
83
83
|
expect(req.header).toHaveBeenCalled();
|
|
84
84
|
expect(req.user).toBe(apiUser);
|
|
85
85
|
});
|
|
86
|
+
test('with flag set should set user if known token', async () => {
|
|
87
|
+
const localConfig = createTestConfig({
|
|
88
|
+
getLogger,
|
|
89
|
+
authentication: {
|
|
90
|
+
enableApiToken: true,
|
|
91
|
+
},
|
|
92
|
+
experimental: {
|
|
93
|
+
flags: {
|
|
94
|
+
onlyFeatureTokensWithFeatureAPIs: true,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
const apiUser = new ApiUser({
|
|
99
|
+
tokenName: 'default',
|
|
100
|
+
permissions: [CLIENT],
|
|
101
|
+
project: ALL,
|
|
102
|
+
environment: 'development',
|
|
103
|
+
type: ApiTokenType.BACKEND,
|
|
104
|
+
secret: 'some-known-token',
|
|
105
|
+
});
|
|
106
|
+
const apiTokenService = {
|
|
107
|
+
getUserForToken: vi.fn().mockReturnValue(apiUser),
|
|
108
|
+
};
|
|
109
|
+
const func = apiTokenMiddleware(localConfig, { apiTokenService });
|
|
110
|
+
const cb = vi.fn();
|
|
111
|
+
const req = {
|
|
112
|
+
header: vi.fn().mockReturnValue('*:development.some-known-token'),
|
|
113
|
+
user: undefined,
|
|
114
|
+
path: '/api/client',
|
|
115
|
+
};
|
|
116
|
+
await func(req, undefined, cb);
|
|
117
|
+
expect(cb).toHaveBeenCalled();
|
|
118
|
+
expect(req.header).toHaveBeenCalled();
|
|
119
|
+
expect(req.user).toBe(apiUser);
|
|
120
|
+
});
|
|
86
121
|
test.each([
|
|
87
122
|
ApiTokenType.CLIENT,
|
|
88
123
|
ApiTokenType.BACKEND,
|
|
@@ -190,29 +225,4 @@ test('should call next if apiTokenService throws x2', async () => {
|
|
|
190
225
|
await func(req, undefined, cb);
|
|
191
226
|
expect(cb).toHaveBeenCalled();
|
|
192
227
|
});
|
|
193
|
-
test('should add user if client token and /edge/metrics', async () => {
|
|
194
|
-
const apiUser = new ApiUser({
|
|
195
|
-
tokenName: 'default',
|
|
196
|
-
permissions: [CLIENT],
|
|
197
|
-
project: ALL,
|
|
198
|
-
environment: ALL,
|
|
199
|
-
type: ApiTokenType.BACKEND,
|
|
200
|
-
secret: 'a',
|
|
201
|
-
});
|
|
202
|
-
const apiTokenService = {
|
|
203
|
-
getUserForToken: vi.fn().mockReturnValue(apiUser),
|
|
204
|
-
};
|
|
205
|
-
const func = apiTokenMiddleware(config, { apiTokenService });
|
|
206
|
-
const cb = vi.fn();
|
|
207
|
-
const req = {
|
|
208
|
-
header: vi.fn().mockReturnValue('some-known-token'),
|
|
209
|
-
user: undefined,
|
|
210
|
-
path: '/edge/metrics',
|
|
211
|
-
method: 'POST',
|
|
212
|
-
};
|
|
213
|
-
await func(req, undefined, cb);
|
|
214
|
-
expect(cb).toHaveBeenCalled();
|
|
215
|
-
expect(req.header).toHaveBeenCalled();
|
|
216
|
-
expect(req.user).toBe(apiUser);
|
|
217
|
-
});
|
|
218
228
|
//# sourceMappingURL=api-token-middleware.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-token-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/api-token-middleware.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-token-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/api-token-middleware.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IUnleashConfig } from '../types/option.js';
|
|
2
|
+
import type { IUnleashServices } from '../services/index.js';
|
|
3
|
+
export declare const backendApiAccessMiddleware: ({ getLogger, authentication, flagResolver, }: Pick<IUnleashConfig, "getLogger" | "authentication" | "flagResolver">, { apiTokenService }: Pick<IUnleashServices, "apiTokenService">) => any;
|
|
4
|
+
export default backendApiAccessMiddleware;
|
|
5
|
+
//# sourceMappingURL=backend-token-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-token-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,eAAO,MAAM,0BAA0B,GACnC,8CAIG,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC,EACxE,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,KAC/D,GA6DF,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ApiTokenType } from '../types/model.js';
|
|
2
|
+
import { NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED, TOKEN_TYPE_ERROR_MESSAGE, } from './api-token-middleware.js';
|
|
3
|
+
export const backendApiAccessMiddleware = ({ getLogger, authentication, flagResolver, }, { apiTokenService }) => {
|
|
4
|
+
const logger = getLogger('/middleware/backend-token-middleware.ts');
|
|
5
|
+
logger.debug('Enabling backend-token middleware');
|
|
6
|
+
if (!authentication.enableApiToken) {
|
|
7
|
+
return (_req, _res, next) => next();
|
|
8
|
+
}
|
|
9
|
+
return async (req, res, next) => {
|
|
10
|
+
const onlyFeatureTokensWithFeatureAPIs = flagResolver.isEnabled('onlyFeatureTokensWithFeatureAPIs');
|
|
11
|
+
// Defer to api-token-middleware
|
|
12
|
+
if (!onlyFeatureTokensWithFeatureAPIs) {
|
|
13
|
+
return next();
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const apiToken = req.header('authorization');
|
|
17
|
+
if (!apiToken) {
|
|
18
|
+
res.status(401).send({
|
|
19
|
+
message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
|
|
20
|
+
});
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Disallow PAT/Service account tokens and admin tokens
|
|
24
|
+
if (apiToken.startsWith('user:') || apiToken.startsWith('*:*')) {
|
|
25
|
+
res.status(403).send({
|
|
26
|
+
message: TOKEN_TYPE_ERROR_MESSAGE,
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const apiUser = apiToken
|
|
31
|
+
? await apiTokenService.getUserForToken(apiToken)
|
|
32
|
+
: undefined;
|
|
33
|
+
const { CLIENT, BACKEND } = ApiTokenType;
|
|
34
|
+
if (apiUser) {
|
|
35
|
+
if (apiUser.type !== CLIENT && apiUser.type !== BACKEND) {
|
|
36
|
+
res.status(403).send({
|
|
37
|
+
message: TOKEN_TYPE_ERROR_MESSAGE,
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
req.user = apiUser;
|
|
42
|
+
next();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
res.status(401).send({
|
|
46
|
+
message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.warn(error);
|
|
53
|
+
res.status(401).send({
|
|
54
|
+
message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
export default backendApiAccessMiddleware;
|
|
61
|
+
//# sourceMappingURL=backend-token-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-token-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EACH,iCAAiC,EACjC,wBAAwB,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,EACI,SAAS,EACT,cAAc,EACd,YAAY,GACwD,EACxE,EAAE,eAAe,EAA6C,EAC3D,EAAE;IACL,MAAM,MAAM,GAAG,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAClD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,gCAAgC,GAAG,YAAY,CAAC,SAAS,CAC3D,kCAAkC,CACrC,CAAC;QACF,gCAAgC;QAChC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACpC,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,uDAAuD;YACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,wBAAwB;iBACpC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ;gBACpB,CAAC,CAAC,MAAM,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACjD,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;YAEzC,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,OAAO,EAAE,wBAAwB;qBACpC,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;gBACnB,IAAI,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,iCAAiC;aAC7C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-token-middleware.test.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createTestConfig } from '../../test/config/test-config.js';
|
|
2
|
+
import getLogger from '../../test/fixtures/no-logger.js';
|
|
3
|
+
import { vi } from 'vitest';
|
|
4
|
+
import backendApiAccessMiddleware from './backend-token-middleware.js';
|
|
5
|
+
test('with flag set client api should return 403 if user object is set and token is PAT', async () => {
|
|
6
|
+
const localConfig = createTestConfig({
|
|
7
|
+
getLogger,
|
|
8
|
+
authentication: {
|
|
9
|
+
enableApiToken: true,
|
|
10
|
+
},
|
|
11
|
+
experimental: {
|
|
12
|
+
flags: {
|
|
13
|
+
onlyFeatureTokensWithFeatureAPIs: true,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const apiTokenService = {
|
|
18
|
+
getUserForToken: vi.fn(),
|
|
19
|
+
};
|
|
20
|
+
const func = backendApiAccessMiddleware(localConfig, { apiTokenService });
|
|
21
|
+
const cb = vi.fn();
|
|
22
|
+
const user = { accountType: 'User', id: 1, username: 'PAT-Owner' };
|
|
23
|
+
const req = {
|
|
24
|
+
header: vi.fn().mockReturnValue('user:some-pat-token'),
|
|
25
|
+
user,
|
|
26
|
+
path: '/api/client',
|
|
27
|
+
};
|
|
28
|
+
const res = {
|
|
29
|
+
status: vi.fn().mockReturnValue({
|
|
30
|
+
send: vi.fn(),
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
await func(req, res, cb);
|
|
34
|
+
expect(cb).not.toHaveBeenCalled();
|
|
35
|
+
expect(req.header).toHaveBeenCalled();
|
|
36
|
+
expect(res.status).toHaveBeenCalledWith(403);
|
|
37
|
+
});
|
|
38
|
+
test.each([
|
|
39
|
+
'user:asdkjsdhg3',
|
|
40
|
+
'*:*.asdf',
|
|
41
|
+
])('%s PAT format tokens with client api cause middleware to return 403 when flag is set', async (rejectedToken) => {
|
|
42
|
+
const localConfig = createTestConfig({
|
|
43
|
+
getLogger,
|
|
44
|
+
authentication: {
|
|
45
|
+
enableApiToken: true,
|
|
46
|
+
},
|
|
47
|
+
experimental: {
|
|
48
|
+
flags: {
|
|
49
|
+
onlyFeatureTokensWithFeatureAPIs: true,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const apiTokenService = {
|
|
54
|
+
getUserForToken: vi.fn(),
|
|
55
|
+
};
|
|
56
|
+
const func = backendApiAccessMiddleware(localConfig, { apiTokenService });
|
|
57
|
+
const cb = vi.fn();
|
|
58
|
+
const res = {
|
|
59
|
+
status: vi.fn().mockReturnValue({ send: vi.fn() }),
|
|
60
|
+
};
|
|
61
|
+
const req = {
|
|
62
|
+
header: vi.fn().mockReturnValue(rejectedToken),
|
|
63
|
+
user: undefined,
|
|
64
|
+
path: '/api/client/metrics',
|
|
65
|
+
};
|
|
66
|
+
await func(req, res, cb);
|
|
67
|
+
expect(apiTokenService.getUserForToken).not.toHaveBeenCalled();
|
|
68
|
+
expect(req.header).toHaveBeenCalled();
|
|
69
|
+
expect(res.status).toHaveBeenCalledWith(403);
|
|
70
|
+
expect(cb).not.toHaveBeenCalled();
|
|
71
|
+
expect(req.user).toBeFalsy();
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=backend-token-middleware.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-token-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/backend-token-middleware.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,23 @@
|
|
|
1
1
|
import type { RequestHandler } from 'express';
|
|
2
|
+
import type { IFlagResolver, IFlagKey } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use `requireFeatureEnabled` for feature-flag route gating.
|
|
5
|
+
*
|
|
6
|
+
* Generic conditional middleware runner.
|
|
7
|
+
* Prefer this only for non-feature-flag conditions.
|
|
8
|
+
*/
|
|
2
9
|
export declare const conditionalMiddleware: (condition: () => boolean, middleware: RequestHandler) => RequestHandler;
|
|
10
|
+
/**
|
|
11
|
+
* Route-level feature gate middleware.
|
|
12
|
+
*
|
|
13
|
+
* Recommended usage:
|
|
14
|
+
* `middleware: [requireFeatureEnabled(config.flagResolver, 'myFlag')]`
|
|
15
|
+
*
|
|
16
|
+
* Guidance:
|
|
17
|
+
* - Prefer route-level usage (`this.route({ middleware: [...] })`) in controllers.
|
|
18
|
+
* - Avoid broad prefix mounts (for example `/api/admin/projects`) where sibling routes
|
|
19
|
+
* can accidentally be gated.
|
|
20
|
+
* - The route remains registered/discoverable; disabled features return `404` at request time.
|
|
21
|
+
*/
|
|
22
|
+
export declare const requireFeatureEnabled: (flagResolver: Pick<IFlagResolver, "isEnabled">, flagName: IFlagKey) => RequestHandler;
|
|
3
23
|
//# sourceMappingURL=conditional-middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"conditional-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAC9B,WAAW,MAAM,OAAO,EACxB,YAAY,cAAc,KAC3B,cAQF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,GAC9B,cAAc,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAC9C,UAAU,QAAQ,KACnB,cAOF,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `requireFeatureEnabled` for feature-flag route gating.
|
|
3
|
+
*
|
|
4
|
+
* Generic conditional middleware runner.
|
|
5
|
+
* Prefer this only for non-feature-flag conditions.
|
|
6
|
+
*/
|
|
1
7
|
export const conditionalMiddleware = (condition, middleware) => {
|
|
2
8
|
return (req, res, next) => {
|
|
3
9
|
if (condition()) {
|
|
@@ -8,4 +14,24 @@ export const conditionalMiddleware = (condition, middleware) => {
|
|
|
8
14
|
}
|
|
9
15
|
};
|
|
10
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Route-level feature gate middleware.
|
|
19
|
+
*
|
|
20
|
+
* Recommended usage:
|
|
21
|
+
* `middleware: [requireFeatureEnabled(config.flagResolver, 'myFlag')]`
|
|
22
|
+
*
|
|
23
|
+
* Guidance:
|
|
24
|
+
* - Prefer route-level usage (`this.route({ middleware: [...] })`) in controllers.
|
|
25
|
+
* - Avoid broad prefix mounts (for example `/api/admin/projects`) where sibling routes
|
|
26
|
+
* can accidentally be gated.
|
|
27
|
+
* - The route remains registered/discoverable; disabled features return `404` at request time.
|
|
28
|
+
*/
|
|
29
|
+
export const requireFeatureEnabled = (flagResolver, flagName) => {
|
|
30
|
+
return (_req, res, next) => {
|
|
31
|
+
if (flagResolver.isEnabled(flagName)) {
|
|
32
|
+
return next();
|
|
33
|
+
}
|
|
34
|
+
return res.sendStatus(404);
|
|
35
|
+
};
|
|
36
|
+
};
|
|
11
37
|
//# sourceMappingURL=conditional-middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conditional-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,SAAwB,EACxB,UAA0B,EACZ,EAAE;IAChB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,SAAS,EAAE,EAAE,CAAC;YACd,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,EAAE,CAAC;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,YAA8C,EAC9C,QAAkB,EACJ,EAAE;IAChB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-middleware.test.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
import { conditionalMiddleware, requireFeatureEnabled, } from './conditional-middleware.js';
|
|
3
|
+
test('conditionalMiddleware should run middleware when condition is true', () => {
|
|
4
|
+
const middleware = vi.fn((_req, _res, next) => next());
|
|
5
|
+
const next = vi.fn();
|
|
6
|
+
conditionalMiddleware(() => true, middleware)({}, {}, next);
|
|
7
|
+
expect(middleware).toHaveBeenCalled();
|
|
8
|
+
expect(next).toHaveBeenCalledWith();
|
|
9
|
+
});
|
|
10
|
+
test('requireFeatureEnabled should call next when feature is enabled', () => {
|
|
11
|
+
const next = vi.fn();
|
|
12
|
+
const flagResolver = {
|
|
13
|
+
isEnabled: vi.fn().mockReturnValue(true),
|
|
14
|
+
};
|
|
15
|
+
// @ts-expect-error the feature name does not exist, it's only for testing
|
|
16
|
+
requireFeatureEnabled(flagResolver, 'changeRequestEnabled')({}, {}, next);
|
|
17
|
+
expect(flagResolver.isEnabled).toHaveBeenCalledWith('changeRequestEnabled');
|
|
18
|
+
expect(next).toHaveBeenCalledWith();
|
|
19
|
+
});
|
|
20
|
+
test('requireFeatureEnabled should return 404 when feature is disabled', () => {
|
|
21
|
+
const next = vi.fn();
|
|
22
|
+
const sendStatus = vi.fn();
|
|
23
|
+
const flagResolver = {
|
|
24
|
+
isEnabled: vi.fn().mockReturnValue(false),
|
|
25
|
+
};
|
|
26
|
+
// @ts-expect-error the feature name does not exist, it's only for testing
|
|
27
|
+
requireFeatureEnabled(flagResolver, 'changeRequestEnabled')({}, { sendStatus }, next);
|
|
28
|
+
expect(next).not.toHaveBeenCalled();
|
|
29
|
+
expect(sendStatus).toHaveBeenCalledWith(404);
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=conditional-middleware.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-middleware.test.js","sourceRoot":"","sources":["../../../src/lib/middleware/conditional-middleware.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACH,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,6BAA6B,CAAC;AAErC,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC5E,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAErB,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAS,EAAE,EAAS,EAAE,IAAI,CAAC,CAAC;IAE1E,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IACxE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG;QACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;KAC3C,CAAC;IAEF,0EAA0E;IAC1E,qBAAqB,CAAC,YAAmB,EAAE,sBAAsB,CAAC,CAC9D,EAAS,EACT,EAAS,EACT,IAAI,CACP,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG;QACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;KAC5C,CAAC;IAEF,0EAA0E;IAC1E,qBAAqB,CAAC,YAAmB,EAAE,sBAAsB,CAAC,CAC9D,EAAS,EACT,EAAE,UAAU,EAAS,EACrB,IAAI,CACP,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IUnleashConfig } from '../types/option.js';
|
|
2
|
+
import type { IUnleashServices } from '../services/index.js';
|
|
3
|
+
export declare const frontendApiAccessMiddleware: ({ getLogger, authentication, flagResolver, }: Pick<IUnleashConfig, "getLogger" | "authentication" | "flagResolver">, { apiTokenService }: Pick<IUnleashServices, "apiTokenService">) => any;
|
|
4
|
+
export default frontendApiAccessMiddleware;
|
|
5
|
+
//# sourceMappingURL=frontend-token-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend-token-middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/middleware/frontend-token-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,eAAO,MAAM,2BAA2B,GACpC,8CAIG,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC,EACxE,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,KAC/D,GA6DF,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ApiTokenType } from '../types/model.js';
|
|
2
|
+
import { NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED, TOKEN_TYPE_ERROR_MESSAGE, } from './api-token-middleware.js';
|
|
3
|
+
export const frontendApiAccessMiddleware = ({ getLogger, authentication, flagResolver, }, { apiTokenService }) => {
|
|
4
|
+
const logger = getLogger('/middleware/frontend-token-middleware.ts');
|
|
5
|
+
logger.debug('Enabling frontend-token middleware');
|
|
6
|
+
if (!authentication.enableApiToken) {
|
|
7
|
+
return (_req, _res, next) => next();
|
|
8
|
+
}
|
|
9
|
+
return async (req, res, next) => {
|
|
10
|
+
const onlyFeatureTokensWithFeatureAPIs = flagResolver.isEnabled('onlyFeatureTokensWithFeatureAPIs');
|
|
11
|
+
// Defer to api-token-middleware
|
|
12
|
+
if (!onlyFeatureTokensWithFeatureAPIs) {
|
|
13
|
+
return next();
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const apiToken = req.header('authorization');
|
|
17
|
+
if (!apiToken) {
|
|
18
|
+
res.status(401).send({
|
|
19
|
+
message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
|
|
20
|
+
});
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Disallow PAT/Service account tokens and admin tokens
|
|
24
|
+
if (apiToken.startsWith('user:') || apiToken.startsWith('*:*')) {
|
|
25
|
+
res.status(403).send({
|
|
26
|
+
message: TOKEN_TYPE_ERROR_MESSAGE,
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const apiUser = apiToken
|
|
31
|
+
? await apiTokenService.getUserForToken(apiToken)
|
|
32
|
+
: undefined;
|
|
33
|
+
const { FRONTEND } = ApiTokenType;
|
|
34
|
+
if (apiUser) {
|
|
35
|
+
if (apiUser.type !== FRONTEND) {
|
|
36
|
+
res.status(403).send({
|
|
37
|
+
message: TOKEN_TYPE_ERROR_MESSAGE,
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
req.user = apiUser;
|
|
42
|
+
next();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
res.status(401).send({
|
|
46
|
+
message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.warn(error);
|
|
53
|
+
res.status(401).send({
|
|
54
|
+
message: NO_TOKEN_WHERE_TOKEN_WAS_REQUIRED,
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
export default frontendApiAccessMiddleware;
|
|
61
|
+
//# sourceMappingURL=frontend-token-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend-token-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/frontend-token-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EACH,iCAAiC,EACjC,wBAAwB,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,EACI,SAAS,EACT,cAAc,EACd,YAAY,GACwD,EACxE,EAAE,eAAe,EAA6C,EAC3D,EAAE;IACL,MAAM,MAAM,GAAG,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,gCAAgC,GAAG,YAAY,CAAC,SAAS,CAC3D,kCAAkC,CACrC,CAAC;QACF,gCAAgC;QAChC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACpC,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,uDAAuD;YACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,wBAAwB;iBACpC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ;gBACpB,CAAC,CAAC,MAAM,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACjD,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;YAElC,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,OAAO,EAAE,wBAAwB;qBACpC,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;gBACnB,IAAI,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,iCAAiC;iBAC7C,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,iCAAiC;aAC7C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
|
|
@@ -3,7 +3,7 @@ export const userTokenClientApiLogger = ({ getLogger, flagResolver, }) => {
|
|
|
3
3
|
const logger = getLogger('/middleware/user-token-client-api-logger-middleware.ts');
|
|
4
4
|
const apiToken = req.header('authorization');
|
|
5
5
|
if ((apiToken?.startsWith('user:') || apiToken?.startsWith('*:*.')) &&
|
|
6
|
-
flagResolver.isEnabled('
|
|
6
|
+
!flagResolver.isEnabled('userTokenWithClientApiLoggingKillSwitch')) {
|
|
7
7
|
logger.info('In the next version update, calling API endpoints under /api/client/ using Personal Access Tokens and Service Accounts will no longer be supported. Please update your integrations to use the new supported authentication method before upgrading to avoid service disruption.');
|
|
8
8
|
}
|
|
9
9
|
next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-token-client-api-logger-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/user-token-client-api-logger-middleware.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACrC,SAAS,EACT,YAAY,GACqC,EAAO,EAAE;IAC1D,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,SAAS,CACpB,wDAAwD,CAC3D,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,IACI,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,YAAY,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"user-token-client-api-logger-middleware.js","sourceRoot":"","sources":["../../../src/lib/middleware/user-token-client-api-logger-middleware.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACrC,SAAS,EACT,YAAY,GACqC,EAAO,EAAE;IAC1D,OAAO,KAAK,EAAE,GAA+B,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,SAAS,CACpB,wDAAwD,CAC3D,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,IACI,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC,YAAY,CAAC,SAAS,CAAC,yCAAyC,CAAC,EACpE,CAAC;YACC,MAAM,CAAC,IAAI,CACP,kRAAkR,CACrR,CAAC;QACN,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -20,7 +20,7 @@ export declare const eventSchema: {
|
|
|
20
20
|
readonly type: {
|
|
21
21
|
readonly type: "string";
|
|
22
22
|
readonly description: "What [type](https://docs.getunleash.io/concepts/events#event-types) of event this is";
|
|
23
|
-
readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted"];
|
|
23
|
+
readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted", "user-access-request-registered", "user-access-request-approved", "user-access-request-rejected"];
|
|
24
24
|
readonly example: "feature-created";
|
|
25
25
|
};
|
|
26
26
|
readonly createdBy: {
|
|
@@ -43,7 +43,7 @@ export declare const eventSearchResponseSchema: {
|
|
|
43
43
|
readonly type: {
|
|
44
44
|
readonly type: "string";
|
|
45
45
|
readonly description: "What [type](https://docs.getunleash.io/concepts/events#event-types) of event this is";
|
|
46
|
-
readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted"];
|
|
46
|
+
readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted", "user-access-request-registered", "user-access-request-approved", "user-access-request-rejected"];
|
|
47
47
|
readonly example: "feature-created";
|
|
48
48
|
};
|
|
49
49
|
readonly createdBy: {
|
|
@@ -50,7 +50,7 @@ export declare const eventsSchema: {
|
|
|
50
50
|
readonly type: {
|
|
51
51
|
readonly type: "string";
|
|
52
52
|
readonly description: "What [type](https://docs.getunleash.io/concepts/events#event-types) of event this is";
|
|
53
|
-
readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted"];
|
|
53
|
+
readonly enum: readonly ["application-created", "feature-created", "feature-deleted", "feature-updated", "feature-metadata-updated", "feature-variants-updated", "feature-environment-variants-updated", "feature-project-change", "feature-archived", "feature-revived", "feature-import", "feature-tagged", "feature-tag-import", "feature-strategy-update", "feature-strategy-add", "feature-strategy-remove", "feature-type-updated", "feature-completed", "feature-uncompleted", "feature-link-added", "feature-link-removed", "feature-link-updated", "strategy-order-changed", "drop-feature-tags", "feature-untagged", "feature-stale-on", "feature-stale-off", "drop-features", "feature-environment-enabled", "feature-environment-disabled", "strategy-created", "strategy-deleted", "strategy-deprecated", "strategy-reactivated", "strategy-updated", "strategy-import", "drop-strategies", "context-field-created", "context-field-updated", "context-field-deleted", "project-access-added", "project-access-user-roles-updated", "project-access-group-roles-updated", "project-access-user-roles-deleted", "project-access-group-roles-deleted", "project-access-updated", "project-created", "project-updated", "project-deleted", "project-archived", "project-revived", "project-import", "project-user-added", "project-user-removed", "project-user-role-changed", "project-group-added", "role-created", "role-updated", "role-deleted", "drop-projects", "tag-created", "tag-deleted", "tag-import", "drop-tags", "tag-type-created", "tag-type-deleted", "tag-type-updated", "tag-type-import", "drop-tag-types", "addon-config-created", "addon-config-updated", "addon-config-deleted", "db-pool-update", "user-created", "user-updated", "user-deleted", "drop-environments", "environment-import", "environment-created", "environment-updated", "environment-deleted", "segment-created", "segment-updated", "segment-deleted", "group-created", "group-updated", "group-deleted", "group-user-added", "group-user-removed", "setting-created", "setting-updated", "setting-deleted", "client-metrics", "client-register", "pat-created", "pat-deleted", "public-signup-token-created", "public-signup-token-user-added", "public-signup-token-updated", "change-request-created", "change-request-discarded", "change-added", "change-discarded", "change-edited", "change-request-rejected", "change-request-approved", "change-request-approval-added", "change-request-cancelled", "change-request-sent-to-review", "change-request-schedule-suspended", "change-request-applied", "change-request-scheduled", "change-request-scheduled-application-success", "change-request-scheduled-application-failure", "change-request-configuration-updated", "api-token-created", "api-token-updated", "api-token-deleted", "feature-favorited", "feature-unfavorited", "project-favorited", "project-unfavorited", "features-exported", "features-imported", "service-account-created", "service-account-deleted", "service-account-updated", "feature-potentially-stale-on", "feature-dependency-added", "feature-dependency-removed", "feature-dependencies-removed", "banner-created", "banner-updated", "banner-deleted", "safeguard-changed", "safeguard-deleted", "release-plan-progressions-resumed", "release-plan-progressions-paused", "project-environment-added", "project-environment-removed", "default-strategy-updated", "segment-import", "signal-endpoint-created", "signal-endpoint-updated", "signal-endpoint-deleted", "signal-endpoint-token-created", "signal-endpoint-token-updated", "signal-endpoint-token-deleted", "actions-created", "actions-updated", "actions-deleted", "release-plan-template-created", "release-plan-template-updated", "release-plan-template-deleted", "release-plan-template-archived", "release-plan-added", "release-plan-removed", "release-plan-milestone-started", "milestone-progression-created", "milestone-progression-updated", "milestone-progression-deleted", "milestone-progression-changed", "user-preference-updated", "scim-users-deleted", "scim-groups-deleted", "cdn-token-created", "change-request-requested-approvers-updated", "impact-metric-created", "impact-metric-updated", "impact-metric-deleted", "user-access-request-registered", "user-access-request-approved", "user-access-request-rejected"];
|
|
54
54
|
readonly example: "feature-created";
|
|
55
55
|
};
|
|
56
56
|
readonly createdBy: {
|