unleash-server 7.4.1 → 7.4.3
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/README.md +6 -1
- package/dist/lib/addons/feature-event-formatter-md.d.ts.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.js +1 -0
- package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.test.js +45 -2
- package/dist/lib/addons/feature-event-formatter-md.test.js.map +1 -1
- package/dist/lib/create-config.d.ts.map +1 -1
- package/dist/lib/create-config.js +6 -1
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/db/feature-environment-store.d.ts.map +1 -1
- package/dist/lib/db/feature-environment-store.js.map +1 -1
- package/dist/lib/db/index.d.ts.map +1 -1
- package/dist/lib/db/index.js +5 -2
- package/dist/lib/db/index.js.map +1 -1
- package/dist/lib/{routes/admin-api/constraints.d.ts → features/constraints/constraints-controller.d.ts} +5 -5
- package/dist/lib/features/constraints/constraints-controller.d.ts.map +1 -0
- package/dist/lib/{routes/admin-api/constraints.js → features/constraints/constraints-controller.js} +6 -6
- package/dist/lib/features/constraints/constraints-controller.js.map +1 -0
- package/dist/lib/features/constraints/constraints-read-model-type.d.ts +6 -0
- package/dist/lib/features/constraints/constraints-read-model-type.d.ts.map +1 -0
- package/dist/lib/features/constraints/constraints-read-model-type.js +2 -0
- package/dist/lib/features/constraints/constraints-read-model-type.js.map +1 -0
- package/dist/lib/features/constraints/constraints-read-model.d.ts +11 -0
- package/dist/lib/features/constraints/constraints-read-model.d.ts.map +1 -0
- package/dist/lib/features/constraints/constraints-read-model.js +55 -0
- package/dist/lib/features/constraints/constraints-read-model.js.map +1 -0
- package/dist/lib/features/constraints/constraints-read-model.test.d.ts +2 -0
- package/dist/lib/features/constraints/constraints-read-model.test.d.ts.map +1 -0
- package/dist/lib/features/constraints/constraints-read-model.test.js +388 -0
- package/dist/lib/features/constraints/constraints-read-model.test.js.map +1 -0
- package/dist/lib/features/constraints/constraints.e2e.test.d.ts.map +1 -0
- package/dist/{test/e2e/api/admin → lib/features/constraints}/constraints.e2e.test.js +4 -4
- package/dist/lib/features/constraints/constraints.e2e.test.js.map +1 -0
- package/dist/lib/features/constraints/createConstraintsReadModel.d.ts +5 -0
- package/dist/lib/features/constraints/createConstraintsReadModel.d.ts.map +1 -0
- package/dist/lib/features/constraints/createConstraintsReadModel.js +9 -0
- package/dist/lib/features/constraints/createConstraintsReadModel.js.map +1 -0
- package/dist/lib/features/constraints/fake-constraints-read-model.d.ts +7 -0
- package/dist/lib/features/constraints/fake-constraints-read-model.d.ts.map +1 -0
- package/dist/lib/features/constraints/fake-constraints-read-model.js +11 -0
- package/dist/lib/features/constraints/fake-constraints-read-model.js.map +1 -0
- package/dist/lib/features/context/context.d.ts.map +1 -1
- package/dist/lib/features/context/context.js +16 -10
- package/dist/lib/features/context/context.js.map +1 -1
- package/dist/lib/features/context/createContextService.js +1 -1
- package/dist/lib/features/context/createContextService.js.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-controller.d.ts.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-controller.js +0 -1
- package/dist/lib/features/dependent-features/dependent-features-controller.js.map +1 -1
- package/dist/lib/features/edgetokens/edge-hmac-verifier.d.ts +4 -0
- package/dist/lib/features/edgetokens/edge-hmac-verifier.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/edge-hmac-verifier.js +83 -0
- package/dist/lib/features/edgetokens/edge-hmac-verifier.js.map +1 -0
- package/dist/lib/features/edgetokens/edge-token-store.d.ts +16 -0
- package/dist/lib/features/edgetokens/edge-token-store.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/edge-token-store.js +101 -0
- package/dist/lib/features/edgetokens/edge-token-store.js.map +1 -0
- package/dist/lib/features/edgetokens/edge-tokens.d.ts +2 -0
- package/dist/lib/features/edgetokens/edge-tokens.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/edge-tokens.js +16 -0
- package/dist/lib/features/edgetokens/edge-tokens.js.map +1 -0
- package/dist/lib/features/edgetokens/edge-tokens.test.d.ts +2 -0
- package/dist/lib/features/edgetokens/edge-tokens.test.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/edge-tokens.test.js +22 -0
- package/dist/lib/features/edgetokens/edge-tokens.test.js.map +1 -0
- package/dist/lib/features/edgetokens/edge-verification.d.ts +3 -0
- package/dist/lib/features/edgetokens/edge-verification.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/edge-verification.js +25 -0
- package/dist/lib/features/edgetokens/edge-verification.js.map +1 -0
- package/dist/lib/features/edgetokens/edge-verification.test.d.ts +2 -0
- package/dist/lib/features/edgetokens/edge-verification.test.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/edge-verification.test.js +18 -0
- package/dist/lib/features/edgetokens/edge-verification.test.js.map +1 -0
- package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts +11 -0
- package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts.map +1 -0
- package/dist/lib/features/edgetokens/fake-edge-token-store.js +21 -0
- package/dist/lib/features/edgetokens/fake-edge-token-store.js.map +1 -0
- package/dist/lib/features/feature-lifecycle/feature-lifecycle-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-lifecycle/feature-lifecycle-controller.js +6 -3
- package/dist/lib/features/feature-lifecycle/feature-lifecycle-controller.js.map +1 -1
- package/dist/lib/features/feature-lifecycle/feature-lifecycle-count-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-lifecycle/feature-lifecycle-count-controller.js +2 -1
- package/dist/lib/features/feature-lifecycle/feature-lifecycle-count-controller.js.map +1 -1
- package/dist/lib/features/feature-links/feature-link-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-links/feature-link-controller.js +6 -3
- package/dist/lib/features/feature-links/feature-link-controller.js.map +1 -1
- package/dist/lib/features/feature-search/feature.search.e2e.test.js +3 -3
- package/dist/lib/features/feature-search/feature.search.e2e.test.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 +2 -0
- package/dist/lib/features/feature-toggle/createFeatureToggleService.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/createFeatureToggleService.js +8 -2
- package/dist/lib/features/feature-toggle/createFeatureToggleService.js.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-service.d.ts +6 -6
- package/dist/lib/features/feature-toggle/feature-toggle-service.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-service.js +6 -44
- package/dist/lib/features/feature-toggle/feature-toggle-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 +6 -0
- package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js.map +1 -1
- package/dist/lib/features/feature-toggle/tests/feature-toggle-service.constraint-validation.test.d.ts +2 -0
- package/dist/lib/features/feature-toggle/tests/feature-toggle-service.constraint-validation.test.d.ts.map +1 -0
- package/dist/lib/features/feature-toggle/tests/feature-toggle-service.constraint-validation.test.js +185 -0
- package/dist/lib/features/feature-toggle/tests/feature-toggle-service.constraint-validation.test.js.map +1 -0
- package/dist/lib/features/frontend-api/createFrontendApiService.d.ts.map +1 -1
- package/dist/lib/features/frontend-api/createFrontendApiService.js +2 -0
- package/dist/lib/features/frontend-api/createFrontendApiService.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.map +1 -1
- package/dist/lib/features/instance-stats/createInstanceStatsService.js +0 -1
- package/dist/lib/features/instance-stats/createInstanceStatsService.js.map +1 -1
- package/dist/lib/features/metrics/last-seen/tests/last-seen-service.test.js +2 -2
- package/dist/lib/features/metrics/last-seen/tests/last-seen-service.test.js.map +1 -1
- package/dist/lib/features/metrics/shared/schema.d.ts.map +1 -1
- package/dist/lib/features/metrics/shared/schema.js +10 -2
- package/dist/lib/features/metrics/shared/schema.js.map +1 -1
- package/dist/lib/features/metrics/shared/schema.test.js +18 -0
- package/dist/lib/features/metrics/shared/schema.test.js.map +1 -1
- package/dist/lib/features/pat/createPatService.d.ts +6 -0
- package/dist/lib/features/pat/createPatService.d.ts.map +1 -0
- package/dist/lib/features/pat/createPatService.js +15 -0
- package/dist/lib/features/pat/createPatService.js.map +1 -0
- package/dist/lib/features/pat/fake-pat-store.d.ts +18 -0
- package/dist/lib/features/pat/fake-pat-store.d.ts.map +1 -0
- package/dist/lib/features/pat/fake-pat-store.js +52 -0
- package/dist/lib/features/pat/fake-pat-store.js.map +1 -0
- package/dist/lib/{services → features/pat}/pat-service.d.ts +3 -3
- package/dist/lib/features/pat/pat-service.d.ts.map +1 -0
- package/dist/lib/{services → features/pat}/pat-service.js +5 -5
- package/dist/lib/features/pat/pat-service.js.map +1 -0
- package/dist/lib/{types/stores/pat-store.d.ts → features/pat/pat-store-type.d.ts} +2 -2
- package/dist/lib/features/pat/pat-store-type.d.ts.map +1 -0
- package/dist/lib/features/pat/pat-store-type.js +2 -0
- package/dist/lib/features/pat/pat-store-type.js.map +1 -0
- package/dist/lib/{db → features/pat}/pat-store.d.ts +4 -4
- package/dist/lib/features/pat/pat-store.d.ts.map +1 -0
- package/dist/lib/{db → features/pat}/pat-store.js +1 -1
- package/dist/lib/features/pat/pat-store.js.map +1 -0
- package/dist/lib/features/personal-dashboard/personal-dashboard-controller.d.ts.map +1 -1
- package/dist/lib/features/personal-dashboard/personal-dashboard-controller.js +4 -2
- package/dist/lib/features/personal-dashboard/personal-dashboard-controller.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/constraint.d.ts +2 -1
- package/dist/lib/features/playground/feature-evaluator/constraint.d.ts.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/constraint.js +18 -0
- package/dist/lib/features/playground/feature-evaluator/constraint.js.map +1 -1
- package/dist/lib/features/playground/offline-unleash-client.test.js +105 -0
- package/dist/lib/features/playground/offline-unleash-client.test.js.map +1 -1
- package/dist/lib/features/project-status/project-status-controller.d.ts.map +1 -1
- package/dist/lib/features/project-status/project-status-controller.js +2 -1
- package/dist/lib/features/project-status/project-status-controller.js.map +1 -1
- package/dist/lib/features/release-plans/createReleasePlanMilestoneStrategyService.d.ts +12 -0
- package/dist/lib/features/release-plans/createReleasePlanMilestoneStrategyService.d.ts.map +1 -0
- package/dist/lib/features/release-plans/createReleasePlanMilestoneStrategyService.js +26 -0
- package/dist/lib/features/release-plans/createReleasePlanMilestoneStrategyService.js.map +1 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.d.ts +20 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.d.ts.map +1 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js +37 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js.map +1 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.d.ts +2 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.d.ts.map +1 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js +69 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js.map +1 -0
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts +10 -2
- 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 +0 -1
- package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js.map +1 -1
- package/dist/lib/features/scheduler/schedule-services.d.ts.map +1 -1
- package/dist/lib/features/scheduler/schedule-services.js +3 -2
- package/dist/lib/features/scheduler/schedule-services.js.map +1 -1
- package/dist/lib/features/segment/admin-segment.e2e.test.js +117 -0
- package/dist/lib/features/segment/admin-segment.e2e.test.js.map +1 -1
- package/dist/lib/features/segment/createSegmentService.d.ts.map +1 -1
- package/dist/lib/features/segment/createSegmentService.js +7 -2
- 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 +1 -1
- package/dist/lib/features/segment/segment-controller.js.map +1 -1
- package/dist/lib/features/segment/segment-service.d.ts +3 -1
- package/dist/lib/features/segment/segment-service.d.ts.map +1 -1
- package/dist/lib/features/segment/segment-service.js +4 -1
- package/dist/lib/features/segment/segment-service.js.map +1 -1
- package/dist/lib/features/users/user-store.d.ts.map +1 -1
- package/dist/lib/features/users/user-store.js +6 -0
- package/dist/lib/features/users/user-store.js.map +1 -1
- package/dist/lib/features/users/user-updates-read-model.d.ts +2 -0
- package/dist/lib/features/users/user-updates-read-model.d.ts.map +1 -1
- package/dist/lib/features/users/user-updates-read-model.js +2 -0
- package/dist/lib/features/users/user-updates-read-model.js.map +1 -1
- package/dist/lib/middleware/conditional-middleware.d.ts +1 -1
- package/dist/lib/middleware/conditional-middleware.d.ts.map +1 -1
- package/dist/lib/middleware/response-time-metrics.test.js +4 -0
- package/dist/lib/middleware/response-time-metrics.test.js.map +1 -1
- package/dist/lib/openapi/spec/admin-segment-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts +8 -8
- package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts +17 -17
- package/dist/lib/openapi/spec/client-feature-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/client-features-delta-schema.d.ts +5 -5
- package/dist/lib/openapi/spec/client-features-schema.d.ts +5 -5
- package/dist/lib/openapi/spec/client-features-schema.test.js +12 -0
- package/dist/lib/openapi/spec/client-features-schema.test.js.map +1 -1
- package/dist/lib/openapi/spec/client-metrics-schema.d.ts +1 -0
- package/dist/lib/openapi/spec/client-metrics-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/client-metrics-schema.js +1 -0
- package/dist/lib/openapi/spec/client-metrics-schema.js.map +1 -1
- package/dist/lib/openapi/spec/client-segment-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/constraint-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/create-feature-strategy-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/create-user-response-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/create-user-response-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/edge-environment-projects-list-schema.d.ts +41 -0
- package/dist/lib/openapi/spec/edge-environment-projects-list-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/edge-environment-projects-list-schema.js +39 -0
- package/dist/lib/openapi/spec/edge-environment-projects-list-schema.js.map +1 -0
- package/dist/lib/openapi/spec/edge-token-schema.d.ts +6 -1
- package/dist/lib/openapi/spec/edge-token-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/edge-token-schema.js +6 -1
- package/dist/lib/openapi/spec/edge-token-schema.js.map +1 -1
- package/dist/lib/openapi/spec/environment-project-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/environments-project-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/export-result-schema.d.ts +68 -68
- package/dist/lib/openapi/spec/feature-environment-schema.d.ts +17 -17
- package/dist/lib/openapi/spec/feature-schema.d.ts +34 -34
- package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts +34 -34
- package/dist/lib/openapi/spec/feature-search-response-schema.d.ts +36 -36
- package/dist/lib/openapi/spec/feature-strategy-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/group-schema.d.ts +24 -0
- package/dist/lib/openapi/spec/group-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/group-user-model-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/group-user-model-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/groups-schema.d.ts +48 -0
- package/dist/lib/openapi/spec/groups-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/health-overview-schema.d.ts +69 -69
- package/dist/lib/openapi/spec/health-report-schema.d.ts +69 -69
- package/dist/lib/openapi/spec/index.d.ts +3 -0
- package/dist/lib/openapi/spec/index.d.ts.map +1 -1
- package/dist/lib/openapi/spec/index.js +3 -0
- package/dist/lib/openapi/spec/index.js.map +1 -1
- package/dist/lib/openapi/spec/me-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/me-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/playground-constraint-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/playground-feature-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/playground-response-schema.d.ts +9 -9
- package/dist/lib/openapi/spec/playground-segment-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/playground-strategy-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/profile-schema.d.ts +34 -34
- package/dist/lib/openapi/spec/project-environment-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/project-overview-schema.d.ts +69 -69
- package/dist/lib/openapi/spec/public-signup-token-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/public-signup-token-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/public-signup-tokens-schema.d.ts +24 -0
- package/dist/lib/openapi/spec/public-signup-tokens-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/release-plan-milestone-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/release-plan-schema.d.ts +8 -8
- package/dist/lib/openapi/spec/release-plan-template-schema.d.ts +8 -8
- package/dist/lib/openapi/spec/search-features-schema.d.ts +72 -72
- package/dist/lib/openapi/spec/segment-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/segments-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/signup-data-schema.d.ts +42 -0
- package/dist/lib/openapi/spec/signup-data-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/signup-data-schema.js +40 -0
- package/dist/lib/openapi/spec/signup-data-schema.js.map +1 -0
- package/dist/lib/openapi/spec/submit-signup-data-schema.d.ts +50 -0
- package/dist/lib/openapi/spec/submit-signup-data-schema.d.ts.map +1 -0
- package/dist/lib/openapi/spec/submit-signup-data-schema.js +26 -0
- package/dist/lib/openapi/spec/submit-signup-data-schema.js.map +1 -0
- package/dist/lib/openapi/spec/ui-config-schema.d.ts +5 -0
- package/dist/lib/openapi/spec/ui-config-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/ui-config-schema.js +5 -0
- package/dist/lib/openapi/spec/ui-config-schema.js.map +1 -1
- package/dist/lib/openapi/spec/update-feature-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/update-feature-strategy-schema.d.ts +18 -2
- package/dist/lib/openapi/spec/update-feature-strategy-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/update-feature-strategy-schema.js +17 -1
- package/dist/lib/openapi/spec/update-feature-strategy-schema.js.map +1 -1
- package/dist/lib/openapi/spec/upsert-segment-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/user-access-overview-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/user-access-overview-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/user-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/user-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/user-schema.js +12 -0
- package/dist/lib/openapi/spec/user-schema.js.map +1 -1
- package/dist/lib/openapi/spec/users-groups-base-schema.d.ts +48 -0
- package/dist/lib/openapi/spec/users-groups-base-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/users-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/users-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/users-search-schema.d.ts +12 -0
- package/dist/lib/openapi/spec/users-search-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/validated-edge-tokens-schema.d.ts +6 -1
- package/dist/lib/openapi/spec/validated-edge-tokens-schema.d.ts.map +1 -1
- package/dist/lib/openapi/util/api-operation.d.ts +23 -3
- package/dist/lib/openapi/util/api-operation.d.ts.map +1 -1
- package/dist/lib/openapi/util/api-stability.d.ts +3 -0
- package/dist/lib/openapi/util/api-stability.d.ts.map +1 -0
- package/dist/lib/openapi/util/api-stability.js +49 -0
- package/dist/lib/openapi/util/api-stability.js.map +1 -0
- package/dist/lib/openapi/util/api-stability.test.d.ts +2 -0
- package/dist/lib/openapi/util/api-stability.test.d.ts.map +1 -0
- package/dist/lib/openapi/util/api-stability.test.js +140 -0
- package/dist/lib/openapi/util/api-stability.test.js.map +1 -0
- package/dist/lib/openapi/util/openapi-tags.d.ts +6 -6
- package/dist/lib/openapi/util/openapi-tags.d.ts.map +1 -1
- package/dist/lib/openapi/util/openapi-tags.js +4 -4
- package/dist/lib/openapi/util/openapi-tags.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/project/variants.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.js +5 -1
- package/dist/lib/routes/admin-api/project/variants.js.map +1 -1
- package/dist/lib/routes/admin-api/user/user.d.ts +1 -0
- package/dist/lib/routes/admin-api/user/user.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user/user.js +12 -1
- package/dist/lib/routes/admin-api/user/user.js.map +1 -1
- package/dist/lib/routes/admin-api/user-admin.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user-admin.js +4 -4
- package/dist/lib/routes/admin-api/user-admin.js.map +1 -1
- package/dist/lib/routes/edge-api/index.d.ts +4 -3
- package/dist/lib/routes/edge-api/index.d.ts.map +1 -1
- package/dist/lib/routes/edge-api/index.js +39 -7
- package/dist/lib/routes/edge-api/index.js.map +1 -1
- package/dist/lib/schema/feature-schema.test.js +1 -1
- package/dist/lib/schema/feature-schema.test.js.map +1 -1
- package/dist/lib/server-impl.d.ts +5 -4
- package/dist/lib/server-impl.d.ts.map +1 -1
- package/dist/lib/server-impl.js +6 -3
- package/dist/lib/server-impl.js.map +1 -1
- package/dist/lib/services/api-token-service.d.ts.map +1 -1
- package/dist/lib/services/api-token-service.js.map +1 -1
- package/dist/lib/services/edge-service.d.ts +22 -7
- package/dist/lib/services/edge-service.d.ts.map +1 -1
- package/dist/lib/services/edge-service.js +87 -9
- package/dist/lib/services/edge-service.js.map +1 -1
- package/dist/lib/services/index.d.ts +8 -3
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +23 -6
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/openapi-service.d.ts +8 -2
- package/dist/lib/services/openapi-service.d.ts.map +1 -1
- package/dist/lib/services/openapi-service.js +49 -7
- package/dist/lib/services/openapi-service.js.map +1 -1
- package/dist/lib/services/openapi-service.test.d.ts +2 -0
- package/dist/lib/services/openapi-service.test.d.ts.map +1 -0
- package/dist/lib/services/openapi-service.test.js +41 -0
- package/dist/lib/services/openapi-service.test.js.map +1 -0
- package/dist/lib/services/user-service.d.ts +3 -1
- package/dist/lib/services/user-service.d.ts.map +1 -1
- package/dist/lib/services/user-service.js +7 -2
- package/dist/lib/services/user-service.js.map +1 -1
- package/dist/lib/services/user-service.test.js +4 -28
- package/dist/lib/services/user-service.test.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 +6 -0
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/lib/types/model.d.ts +4 -0
- 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 +5 -0
- package/dist/lib/types/option.d.ts.map +1 -1
- package/dist/lib/types/stores/edge-store.d.ts +14 -0
- package/dist/lib/types/stores/edge-store.d.ts.map +1 -0
- package/dist/lib/types/stores/edge-store.js +2 -0
- package/dist/lib/types/stores/edge-store.js.map +1 -0
- package/dist/lib/types/stores/user-store.d.ts +4 -0
- package/dist/lib/types/stores/user-store.d.ts.map +1 -1
- package/dist/lib/types/stores.d.ts +6 -4
- package/dist/lib/types/stores.d.ts.map +1 -1
- package/dist/lib/types/stores.js +1 -1
- package/dist/lib/types/stores.js.map +1 -1
- package/dist/lib/types/user.d.ts +8 -1
- package/dist/lib/types/user.d.ts.map +1 -1
- package/dist/lib/types/user.js +3 -1
- package/dist/lib/types/user.js.map +1 -1
- package/dist/lib/ui-config/ui-config-service.d.ts.map +1 -1
- package/dist/lib/ui-config/ui-config-service.js +1 -0
- package/dist/lib/ui-config/ui-config-service.js.map +1 -1
- package/dist/lib/ui-config/ui-config.test.js +5 -1
- package/dist/lib/ui-config/ui-config.test.js.map +1 -1
- package/dist/lib/util/constants.d.ts +2 -1
- package/dist/lib/util/constants.d.ts.map +1 -1
- package/dist/lib/util/constants.js +2 -0
- package/dist/lib/util/constants.js.map +1 -1
- package/dist/lib/util/validators/constraint-types.d.ts +1 -0
- package/dist/lib/util/validators/constraint-types.d.ts.map +1 -1
- package/dist/lib/util/validators/constraint-types.js +12 -0
- package/dist/lib/util/validators/constraint-types.js.map +1 -1
- package/dist/lib/util/validators/constraint-types.test.js +25 -1
- package/dist/lib/util/validators/constraint-types.test.js.map +1 -1
- package/dist/mailtemplates/getting-started/getting-started.html.mustache +7 -2
- package/dist/mailtemplates/getting-started/getting-started.plain.mustache +6 -1
- package/dist/migrations/20260204150900-add-edge-hmac-verification-tables.d.ts +3 -0
- package/dist/migrations/20260204150900-add-edge-hmac-verification-tables.d.ts.map +1 -0
- package/dist/migrations/20260204150900-add-edge-hmac-verification-tables.js +39 -0
- package/dist/migrations/20260204150900-add-edge-hmac-verification-tables.js.map +1 -0
- package/dist/migrations/20260213095258-users-company-role-and-email-consent.d.ts +3 -0
- package/dist/migrations/20260213095258-users-company-role-and-email-consent.d.ts.map +1 -0
- package/dist/migrations/20260213095258-users-company-role-and-email-consent.js +12 -0
- package/dist/migrations/20260213095258-users-company-role-and-email-consent.js.map +1 -0
- package/dist/server-dev.js +3 -0
- package/dist/server-dev.js.map +1 -1
- package/dist/test/arbitraries.test.d.ts.map +1 -1
- package/dist/test/arbitraries.test.js +3 -9
- package/dist/test/arbitraries.test.js.map +1 -1
- package/dist/test/e2e/api/admin/context.e2e.test.js +1 -1
- package/dist/test/e2e/api/admin/context.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/variants.e2e.test.js +19 -0
- package/dist/test/e2e/api/admin/project/variants.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/edge/create-token-request.test.d.ts +2 -0
- package/dist/test/e2e/api/edge/create-token-request.test.d.ts.map +1 -0
- package/dist/test/e2e/api/edge/create-token-request.test.js +215 -0
- package/dist/test/e2e/api/edge/create-token-request.test.js.map +1 -0
- package/dist/test/e2e/services/edge-service.e2e.test.js +106 -3
- package/dist/test/e2e/services/edge-service.e2e.test.js.map +1 -1
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts +17 -0
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts.map +1 -0
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js +44 -0
- package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js.map +1 -0
- package/dist/test/fixtures/store.d.ts.map +1 -1
- package/dist/test/fixtures/store.js +5 -2
- package/dist/test/fixtures/store.js.map +1 -1
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/{AdvancedPlayground-B70Djk8B.js → AdvancedPlayground-BVQjoHnr.js} +2 -2
- package/frontend/build/static/BackendConnections-bRvUo06H.js +1 -0
- package/frontend/build/static/{CreateProject-Dnggz6io.js → CreateProject-z7K5-k8g.js} +1 -1
- package/frontend/build/static/{EnterpriseEdge-Dnk6MbDj.js → EnterpriseEdge-CAkbmuGs.js} +2 -2
- package/frontend/build/static/{FeatureMetricsChart-CFEixeGp.js → FeatureMetricsChart-TPw8l2qi.js} +2 -2
- package/frontend/build/static/FeatureStaleDialog-DwV5Mzh6.js +7 -0
- package/frontend/build/static/{FeatureViewLazyExport-CUnXEEwm.js → FeatureViewLazyExport-CBpSqVMU.js} +3 -3
- package/frontend/build/static/{FlagMetricsChart-ujKp_v58.js → FlagMetricsChart-DLcy8CzE.js} +2 -2
- package/frontend/build/static/FrontendNetworkTrafficUsage-CYJZFmkc.js +1 -0
- package/frontend/build/static/{GridLayoutWrapper-Cg_xypvQ.js → GridLayoutWrapper-CixVvIgD.js} +1 -1
- package/frontend/build/static/{ImpactMetricsPage-ZRSvDBg4.js → ImpactMetricsPage-AS6DHn5C.js} +1 -1
- package/frontend/build/static/{LazyAdminExport-B8GV3V8t.js → LazyAdminExport-dyqU9IvB.js} +14 -14
- package/frontend/build/static/{LazyProjectExport-B9SJl4_L.js → LazyProjectExport-B1vRaljX.js} +19 -19
- package/frontend/build/static/{LifecycleChartComponent-DulnIgCV.js → LifecycleChartComponent-BGuUP9oF.js} +3 -3
- package/frontend/build/static/{LineChartComponent-BVdLj0q6.js → LineChartComponent-DA6kG8Ei.js} +1 -1
- package/frontend/build/static/{MarkCompletedDialogue-Cu7y0hRZ.js → MarkCompletedDialogue-D2TM3HgS.js} +1 -1
- package/frontend/build/static/{NetworkOverview-CUmX-taY.js → NetworkOverview-aNdwr7xF.js} +1 -1
- package/frontend/build/static/{NetworkPrometheusAPIWarning-BwnVz0CY.js → NetworkPrometheusAPIWarning-f1m-ZHgX.js} +1 -1
- package/frontend/build/static/{NetworkTraffic-DCMn8UWo.js → NetworkTraffic-CzH9_YqS.js} +1 -1
- package/frontend/build/static/{NetworkTrafficUsage-DSZK447X.js → NetworkTrafficUsage-BqpcQ4JO.js} +1 -1
- package/frontend/build/static/{PercentageDonut-B2OwM0Er.js → PercentageDonut-cKg6eF-p.js} +1 -1
- package/frontend/build/static/{ReactJSONEditor-BPlzE1Zx.js → ReactJSONEditor-BH7GX57b.js} +1 -1
- package/frontend/build/static/RoleCell-D01N1lHV.js +1 -0
- package/frontend/build/static/{aggregateFeatureMetrics-Bcfo39hn.js → aggregateFeatureMetrics-DJ_IwcyH.js} +1 -1
- package/frontend/build/static/{formatTickValue-CqTJlzJZ.js → formatTickValue-ClJtK_xN.js} +2 -2
- package/frontend/build/static/index-Cz4lAJ3Y.js +568 -0
- package/frontend/build/static/{networkTrafficUsageHighlightPlugin-Dmm54dMG.js → networkTrafficUsageHighlightPlugin-Ce-A3Xr6.js} +1 -1
- package/frontend/build/static/unleash_logo_dark_no_label-DHgOj_XN.svg +6 -0
- package/frontend/build/static/unleash_logo_white_no_label-BazgWvcx.svg +6 -0
- package/frontend/build/static/{useApiTokens-D1XvAIIA.js → useApiTokens-Dx2wjhgw.js} +1 -1
- package/frontend/package.json +9 -7
- package/package.json +16 -13
- package/dist/lib/db/pat-store.d.ts.map +0 -1
- package/dist/lib/db/pat-store.js.map +0 -1
- package/dist/lib/routes/admin-api/constraints.d.ts.map +0 -1
- package/dist/lib/routes/admin-api/constraints.js.map +0 -1
- package/dist/lib/services/pat-service.d.ts.map +0 -1
- package/dist/lib/services/pat-service.js.map +0 -1
- package/dist/lib/types/stores/pat-store.d.ts.map +0 -1
- package/dist/lib/types/stores/pat-store.js +0 -2
- package/dist/lib/types/stores/pat-store.js.map +0 -1
- package/dist/test/e2e/api/admin/constraints.e2e.test.d.ts.map +0 -1
- package/dist/test/e2e/api/admin/constraints.e2e.test.js.map +0 -1
- package/dist/test/fixtures/fake-pat-store.d.ts +0 -16
- package/dist/test/fixtures/fake-pat-store.d.ts.map +0 -1
- package/dist/test/fixtures/fake-pat-store.js +0 -35
- package/dist/test/fixtures/fake-pat-store.js.map +0 -1
- package/frontend/build/static/BackendConnections-mlK6EAYQ.js +0 -1
- package/frontend/build/static/FeatureStaleDialog-DZoiwwdR.js +0 -7
- package/frontend/build/static/FrontendNetworkTrafficUsage-Dq8wwaXR.js +0 -1
- package/frontend/build/static/RoleCell-D5skjCJn.js +0 -1
- package/frontend/build/static/index-g9pKMnOR.js +0 -542
- /package/dist/{test/e2e/api/admin → lib/features/constraints}/constraints.e2e.test.d.ts +0 -0
|
@@ -16,7 +16,13 @@ export class ContextController extends Controller {
|
|
|
16
16
|
this.openApiService = openApiService;
|
|
17
17
|
this.transactionalContextService = transactionalContextService;
|
|
18
18
|
const prefix = mode === 'global' ? '' : '/:projectId/context';
|
|
19
|
-
const
|
|
19
|
+
const rootLevelContextFieldsRelease = undefined; // this represents the legacy behavior
|
|
20
|
+
const projectLevelContextFieldsRelease = {
|
|
21
|
+
beta: '7.4.0', // project context fields introduced in 7.4.0
|
|
22
|
+
};
|
|
23
|
+
const release = mode === 'project'
|
|
24
|
+
? projectLevelContextFieldsRelease
|
|
25
|
+
: rootLevelContextFieldsRelease;
|
|
20
26
|
this.flagResolver = config.flagResolver;
|
|
21
27
|
this.route({
|
|
22
28
|
method: 'get',
|
|
@@ -26,7 +32,7 @@ export class ContextController extends Controller {
|
|
|
26
32
|
middleware: [
|
|
27
33
|
openApiService.validPath({
|
|
28
34
|
tags: ['Context'],
|
|
29
|
-
|
|
35
|
+
release,
|
|
30
36
|
summary: 'Gets configured context fields',
|
|
31
37
|
description: 'Returns all configured [Context fields](https://docs.getunleash.io/concepts/unleash-context) that have been created.',
|
|
32
38
|
operationId: resolveOperationId('getContextFields', mode),
|
|
@@ -45,7 +51,7 @@ export class ContextController extends Controller {
|
|
|
45
51
|
middleware: [
|
|
46
52
|
openApiService.validPath({
|
|
47
53
|
tags: ['Context'],
|
|
48
|
-
|
|
54
|
+
release,
|
|
49
55
|
summary: 'Gets context field',
|
|
50
56
|
description: 'Returns specific [context field](https://docs.getunleash.io/concepts/unleash-context) identified by the name in the path',
|
|
51
57
|
operationId: resolveOperationId('getContextField', mode),
|
|
@@ -63,7 +69,7 @@ export class ContextController extends Controller {
|
|
|
63
69
|
middleware: [
|
|
64
70
|
openApiService.validPath({
|
|
65
71
|
tags: ['Strategies'],
|
|
66
|
-
|
|
72
|
+
release,
|
|
67
73
|
operationId: resolveOperationId('getStrategiesByContextField', mode),
|
|
68
74
|
summary: 'Get strategies that use a context field',
|
|
69
75
|
description: "Retrieves a list of all strategies that use the specified context field. If the context field doesn't exist, returns an empty list of strategies",
|
|
@@ -82,7 +88,7 @@ export class ContextController extends Controller {
|
|
|
82
88
|
middleware: [
|
|
83
89
|
openApiService.validPath({
|
|
84
90
|
tags: ['Context'],
|
|
85
|
-
|
|
91
|
+
release,
|
|
86
92
|
operationId: resolveOperationId('createContextField', mode),
|
|
87
93
|
summary: 'Create a context field',
|
|
88
94
|
description: 'Endpoint that allows creation of [custom context fields](https://docs.getunleash.io/concepts/unleash-context#custom-context-fields)',
|
|
@@ -101,7 +107,7 @@ export class ContextController extends Controller {
|
|
|
101
107
|
middleware: [
|
|
102
108
|
openApiService.validPath({
|
|
103
109
|
tags: ['Context'],
|
|
104
|
-
|
|
110
|
+
release,
|
|
105
111
|
summary: 'Update an existing context field',
|
|
106
112
|
description: `Endpoint that allows updating a custom context field. Used to toggle stickiness and add/remove legal values for this context field`,
|
|
107
113
|
operationId: resolveOperationId('updateContextField', mode),
|
|
@@ -120,7 +126,7 @@ export class ContextController extends Controller {
|
|
|
120
126
|
middleware: [
|
|
121
127
|
openApiService.validPath({
|
|
122
128
|
tags: ['Context'],
|
|
123
|
-
|
|
129
|
+
release,
|
|
124
130
|
summary: 'Add or update legal value for the context field',
|
|
125
131
|
description: `Endpoint that allows adding or updating a single custom context field legal value. If the legal value already exists, it will be updated with the new description`,
|
|
126
132
|
operationId: resolveOperationId('updateContextFieldLegalValue', mode),
|
|
@@ -140,7 +146,7 @@ export class ContextController extends Controller {
|
|
|
140
146
|
middleware: [
|
|
141
147
|
openApiService.validPath({
|
|
142
148
|
tags: ['Context'],
|
|
143
|
-
|
|
149
|
+
release,
|
|
144
150
|
summary: 'Delete legal value for the context field',
|
|
145
151
|
description: `Removes the specified custom context field legal value. Does not validate that the legal value is not in use and does not remove usage from constraints that use it.`,
|
|
146
152
|
operationId: resolveOperationId('deleteContextFieldLegalValue', mode),
|
|
@@ -159,7 +165,7 @@ export class ContextController extends Controller {
|
|
|
159
165
|
middleware: [
|
|
160
166
|
openApiService.validPath({
|
|
161
167
|
tags: ['Context'],
|
|
162
|
-
|
|
168
|
+
release,
|
|
163
169
|
summary: 'Delete an existing context field',
|
|
164
170
|
description: 'Endpoint that allows deletion of a custom context field. Does not validate that context field is not in use, but since context field configuration is stored in a json blob for the strategy, existing strategies are safe.',
|
|
165
171
|
operationId: resolveOperationId('deleteContextField', mode),
|
|
@@ -177,7 +183,7 @@ export class ContextController extends Controller {
|
|
|
177
183
|
middleware: [
|
|
178
184
|
openApiService.validPath({
|
|
179
185
|
tags: ['Context'],
|
|
180
|
-
|
|
186
|
+
release,
|
|
181
187
|
summary: 'Validate a context field',
|
|
182
188
|
description: 'Check whether the provided data can be used to create a context field. If the data is not valid, returns a 400 status code with the reason why it is not valid.',
|
|
183
189
|
operationId: resolveOperationId('validateContextFieldName', mode),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/lib/features/context/context.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,IAAI,EACJ,sBAAsB,GACzB,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EACH,kBAAkB,GAErB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EACH,oBAAoB,EACpB,6BAA6B,GAChC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EACH,aAAa,EACb,oBAAoB,GACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAEH,4BAA4B,GAC/B,MAAM,uDAAuD,CAAC;AAG/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,OAAO,EAEH,sBAAsB,GACzB,MAAM,gDAAgD,CAAC;AAUxD,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAE,IAA0B,EAAE,EAAE,CAC3E,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;AAElE,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAO7C,YACI,MAAsB,EACtB,EACI,2BAA2B,EAC3B,cAAc,GAIjB,EACD,OAA6B,QAAQ;QAErC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC9D,MAAM,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/lib/features/context/context.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,IAAI,EACJ,sBAAsB,GACzB,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EACH,kBAAkB,GAErB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EACH,oBAAoB,EACpB,6BAA6B,GAChC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EACH,aAAa,EACb,oBAAoB,GACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAEH,4BAA4B,GAC/B,MAAM,uDAAuD,CAAC;AAG/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,OAAO,EAEH,sBAAsB,GACzB,MAAM,gDAAgD,CAAC;AAUxD,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAE,IAA0B,EAAE,EAAE,CAC3E,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;AAElE,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAO7C,YACI,MAAsB,EACtB,EACI,2BAA2B,EAC3B,cAAc,GAIjB,EACD,OAA6B,QAAQ;QAErC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC9D,MAAM,6BAA6B,GAAG,SAAS,CAAC,CAAC,sCAAsC;QACvF,MAAM,gCAAgC,GAAG;YACrC,IAAI,EAAE,OAAgB,EAAE,6CAA6C;SACxE,CAAC;QACF,MAAM,OAAO,GACT,IAAI,KAAK,SAAS;YACd,CAAC,CAAC,gCAAgC;YAClC,CAAC,CAAC,6BAA6B,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAExC,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,gBAAgB;YAC9B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,gCAAgC;oBACzC,WAAW,EACP,sHAAsH;oBAC1H,WAAW,EAAE,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC;oBACzD,SAAS,EAAE;wBACP,GAAG,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;qBACnD;oBACD,UAAU,EAAE,CAAC,GAAG,sBAAsB,CAAC;iBAC1C,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,MAAM,gBAAgB;YAC/B,OAAO,EAAE,IAAI,CAAC,eAAe;YAC7B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,oBAAoB;oBAC7B,WAAW,EACP,0HAA0H;oBAC9H,WAAW,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,IAAI,CAAC;oBACxD,SAAS,EAAE;wBACP,GAAG,EAAE,oBAAoB,CAAC,oBAAoB,CAAC;qBAClD;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,MAAM,2BAA2B;YAC1C,OAAO,EAAE,IAAI,CAAC,2BAA2B;YACzC,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,YAAY,CAAC;oBACpB,OAAO;oBACP,WAAW,EAAE,kBAAkB,CAC3B,6BAA6B,EAC7B,IAAI,CACP;oBACD,OAAO,EAAE,yCAAyC;oBAClD,WAAW,EACP,kJAAkJ;oBACtJ,SAAS,EAAE;wBACP,GAAG,EAAE,oBAAoB,CACrB,8BAA8B,CACjC;wBACD,GAAG,oBAAoB,CAAC,GAAG,CAAC;qBAC/B;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,kBAAkB;YAChC,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;YAC1D,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,WAAW,EAAE,kBAAkB,CAAC,oBAAoB,EAAE,IAAI,CAAC;oBAC3D,OAAO,EAAE,wBAAwB;oBACjC,WAAW,EACP,qIAAqI;oBACzI,WAAW,EAAE,mBAAmB,CAC5B,0BAA0B,CAC7B;oBACD,SAAS,EAAE;wBACP,GAAG,EAAE,6BAA6B,CAC9B,oBAAoB,CACvB;qBACJ;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG,MAAM,gBAAgB;YAC/B,OAAO,EAAE,IAAI,CAAC,kBAAkB;YAChC,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;YAC1D,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,kCAAkC;oBAC3C,WAAW,EAAE,oIAAoI;oBACjJ,WAAW,EAAE,kBAAkB,CAAC,oBAAoB,EAAE,IAAI,CAAC;oBAC3D,WAAW,EAAE,mBAAmB,CAC5B,0BAA0B,CAC7B;oBACD,SAAS,EAAE;wBACP,GAAG,EAAE,aAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,MAAM,6BAA6B;YAC5C,OAAO,EAAE,IAAI,CAAC,gBAAgB;YAC9B,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;YAC1D,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,iDAAiD;oBAC1D,WAAW,EAAE,mKAAmK;oBAChL,WAAW,EAAE,kBAAkB,CAC3B,8BAA8B,EAC9B,IAAI,CACP;oBACD,WAAW,EAAE,mBAAmB,CAAC,kBAAkB,CAAC;oBACpD,SAAS,EAAE;wBACP,GAAG,EAAE,aAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,GAAG,MAAM,yCAAyC;YACxD,OAAO,EAAE,IAAI,CAAC,gBAAgB;YAC9B,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;YAC1D,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,0CAA0C;oBACnD,WAAW,EAAE,sKAAsK;oBACnL,WAAW,EAAE,kBAAkB,CAC3B,8BAA8B,EAC9B,IAAI,CACP;oBACD,SAAS,EAAE;wBACP,GAAG,EAAE,aAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,GAAG,MAAM,gBAAgB;YAC/B,OAAO,EAAE,IAAI,CAAC,kBAAkB;YAChC,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;YAC1D,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,kCAAkC;oBAC3C,WAAW,EACP,6NAA6N;oBACjO,WAAW,EAAE,kBAAkB,CAAC,oBAAoB,EAAE,IAAI,CAAC;oBAC3D,SAAS,EAAE;wBACP,GAAG,EAAE,aAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC;YACP,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,MAAM,WAAW;YAC1B,OAAO,EAAE,IAAI,CAAC,wBAAwB;YACtC,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;YAC1D,UAAU,EAAE;gBACR,cAAc,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,0BAA0B;oBACnC,WAAW,EACP,iKAAiK;oBACrK,WAAW,EAAE,kBAAkB,CAC3B,0BAA0B,EAC1B,IAAI,CACP;oBACD,WAAW,EAAE,mBAAmB,CAAC,YAAY,CAAC;oBAC9C,SAAS,EAAE;wBACP,GAAG,EAAE,aAAa;qBACrB;iBACJ,CAAC;aACL;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,GAKC,EACD,GAAkC;QAElC,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;iBACV,IAAI,CACD,cAAc,CACV,MAAM,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CACnD;gBACI,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;gBAC/B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnB,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;aAC7B,CACJ,CACJ,CACJ;iBACA,GAAG,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;iBACV,IAAI,CACD,cAAc,CACV,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAClD,CACJ;iBACA,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,GAA0B,EAC1B,GAAiC;QAEjC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;YACrC,MAAM,YAAY,GACd,MAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACrC,GAAG,EACH,GAAG,EACH,kBAAkB,CAAC,GAAG,EACtB,cAAc,CAAC,YAAY,CAAC,CAC/B,CAAC;QACN,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,aAAa,CAAC,8BAA8B,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CACpB,GAIC,EACD,GAAiC;QAEjC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAC/D,CAAC,OAAO,EAAE,EAAE,CACR,OAAO,CAAC,kBAAkB,CACtB;YACI,GAAG,KAAK;YACR,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO;SACjD,EACD,GAAG,CAAC,KAAK,CACZ,CACR,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACrC,GAAG,EACH,GAAG,EACH,kBAAkB,CAAC,GAAG,EACtB,cAAc,CAAC,MAAM,CAAC,EACtB,EAAE,QAAQ,EAAE,WAAW,MAAM,CAAC,IAAI,EAAE,EAAE,CACzC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CACpB,GAA+D,EAC/D,GAAa;QAEb,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QACrC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;QAE9B,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7D,OAAO,CAAC,kBAAkB,CAAC,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CACnE,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,GAAuD,EACvD,GAAa;QAEb,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QACrC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAE5B,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7D,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAC5D,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,GAA8C,EAC9C,GAAa;QAEb,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QACrC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QAEzC,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7D,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAC5D,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,kBAAkB,CACpB,GAA+B,EAC/B,GAAa;QAEb,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QAErC,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7D,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAC9C,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC1B,GAAoC,EACpC,GAAa;QAEb,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE1B,MAAM,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC7B,GAA2C,EAC3C,GAA2C;QAE3C,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACpC,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,aAAa,GACf,MAAM,IAAI,CAAC,2BAA2B,CAAC,2BAA2B,CAC9D,YAAY,EACZ,qBAAqB,CAAC,IAAI,CAAC,CAC9B,CAAC;QAEN,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACrC,GAAG,EACH,GAAG,EACH,4BAA4B,CAAC,GAAG,EAChC,cAAc,CAAC,aAAa,CAAC,CAChC,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -20,7 +20,7 @@ export const createContextService = (config) => (db) => {
|
|
|
20
20
|
}, eventService, privateProjectChecker);
|
|
21
21
|
};
|
|
22
22
|
export const createFakeContextService = (config) => {
|
|
23
|
-
const { getLogger, flagResolver
|
|
23
|
+
const { getLogger, flagResolver } = config;
|
|
24
24
|
const contextFieldStore = new FakeContextFieldStore();
|
|
25
25
|
const featureStrategiesStore = new FakeFeatureStrategiesStore();
|
|
26
26
|
const eventService = createFakeEventsService(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createContextService.js","sourceRoot":"","sources":["../../../../src/lib/features/context/createContextService.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AACzD,OAAO,sBAAsB,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EACH,mBAAmB,EACnB,uBAAuB,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,mBAAmB,MAAM,2CAA2C,CAAC;AAC5E,OAAO,qBAAqB,MAAM,+BAA+B,CAAC;AAClE,OAAO,0BAA0B,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAE5F,MAAM,CAAC,MAAM,oBAAoB,GAC7B,CAAC,MAAsB,EAAE,EAAE,CAC3B,CAAC,EAAM,EAAkB,EAAE;IACvB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACnE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAC3C,EAAE,EACF,SAAS,EACT,YAAY,CACf,CAAC;IACF,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CACrD,EAAE,EACF,QAAQ,EACR,SAAS,EACT,YAAY,CACf,CAAC;IACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACnD,EAAE,mBAAmB,EAAE,EACvB,EAAE,YAAY,EAAE,CACnB,CAAC;IACF,OAAO,IAAI,cAAc,CACrB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,EAC7C;QACI,SAAS;QACT,YAAY;KACf,EACD,YAAY,EACZ,qBAAqB,CACxB,CAAC;AACN,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,MAAsB,EACR,EAAE;IAChB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"createContextService.js","sourceRoot":"","sources":["../../../../src/lib/features/context/createContextService.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AACzD,OAAO,sBAAsB,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EACH,mBAAmB,EACnB,uBAAuB,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,mBAAmB,MAAM,2CAA2C,CAAC;AAC5E,OAAO,qBAAqB,MAAM,+BAA+B,CAAC;AAClE,OAAO,0BAA0B,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAE5F,MAAM,CAAC,MAAM,oBAAoB,GAC7B,CAAC,MAAsB,EAAE,EAAE,CAC3B,CAAC,EAAM,EAAkB,EAAE;IACvB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACnE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAC3C,EAAE,EACF,SAAS,EACT,YAAY,CACf,CAAC;IACF,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CACrD,EAAE,EACF,QAAQ,EACR,SAAS,EACT,YAAY,CACf,CAAC;IACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACnD,EAAE,mBAAmB,EAAE,EACvB,EAAE,YAAY,EAAE,CACnB,CAAC;IACF,OAAO,IAAI,cAAc,CACrB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,EAC7C;QACI,SAAS;QACT,YAAY;KACf,EACD,YAAY,EACZ,qBAAqB,CACxB,CAAC;AACN,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,MAAsB,EACR,EAAE;IAChB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACtD,MAAM,sBAAsB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IAChE,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,qBAAqB,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC9D,OAAO,IAAI,cAAc,CACrB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,EAC7C;QACI,SAAS;QACT,YAAY;KACf,EACD,YAAY,EACZ,qBAAqB,CACxB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependent-features-controller.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/dependent-features/dependent-features-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAEH,KAAK,cAAc,EAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACH,KAAK,4BAA4B,EAMjC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAElC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAIlE,UAAU,aAAa;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAc,SAAQ,aAAa;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAqB,SAAQ,aAAa;IAChD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,sBAAuB,SAAQ,aAAa;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAUD,KAAK,yBAAyB,GAAG,IAAI,CACjC,gBAAgB,EAChB,uCAAuC,GAAG,gBAAgB,CAC7D,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,UAAU;IAC/D,OAAO,CAAC,wBAAwB,CAA8C;IAE9E,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAG5B,MAAM,EAAE,cAAc,EACtB,EACI,qCAAqC,EACrC,cAAc,GACjB,EAAE,yBAAyB;IAsI1B,oBAAoB,CACtB,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,4BAA4B,CAAC,EACnE,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAoBV,uBAAuB,CACzB,GAAG,EAAE,YAAY,CAAC,sBAAsB,EAAE,GAAG,EAAE,GAAG,CAAC,EACnD,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAiBV,yBAAyB,CAC3B,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1C,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAcV,yBAAyB,CAC3B,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1C,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;IAgBV,yBAAyB,CAC3B,GAAG,EAAE,YAAY,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,EACjD,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CACxB,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"dependent-features-controller.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/dependent-features/dependent-features-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAEH,KAAK,cAAc,EAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACH,KAAK,4BAA4B,EAMjC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAElC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAIlE,UAAU,aAAa;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAc,SAAQ,aAAa;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAqB,SAAQ,aAAa;IAChD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,sBAAuB,SAAQ,aAAa;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAUD,KAAK,yBAAyB,GAAG,IAAI,CACjC,gBAAgB,EAChB,uCAAuC,GAAG,gBAAgB,CAC7D,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,UAAU;IAC/D,OAAO,CAAC,wBAAwB,CAA8C;IAE9E,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAG5B,MAAM,EAAE,cAAc,EACtB,EACI,qCAAqC,EACrC,cAAc,GACjB,EAAE,yBAAyB;IAsI1B,oBAAoB,CACtB,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,4BAA4B,CAAC,EACnE,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAoBV,uBAAuB,CACzB,GAAG,EAAE,YAAY,CAAC,sBAAsB,EAAE,GAAG,EAAE,GAAG,CAAC,EACnD,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAiBV,yBAAyB,CAC3B,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1C,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAcV,yBAAyB,CAC3B,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1C,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;IAgBV,yBAAyB,CAC3B,GAAG,EAAE,YAAY,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,EACjD,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CACxB,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;CAKnB"}
|
|
@@ -161,7 +161,6 @@ export default class DependentFeaturesController extends Controller {
|
|
|
161
161
|
this.openApiService.respondWithValidation(200, res, parentVariantOptionsSchema.$id, options);
|
|
162
162
|
}
|
|
163
163
|
async checkDependenciesExist(req, res) {
|
|
164
|
-
const { child } = req.params;
|
|
165
164
|
const exist = await this.dependentFeaturesService.checkDependenciesExist();
|
|
166
165
|
res.send(exist);
|
|
167
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependent-features-controller.js","sourceRoot":"","sources":["../../../../src/lib/features/dependent-features/dependent-features-controller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dependent-features-controller.js","sourceRoot":"","sources":["../../../../src/lib/features/dependent-features/dependent-features-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-hmac-verifier.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-hmac-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D,eAAO,MAAM,+BAA+B,GACxC,aAAa,WAAW,KACzB,cA4FF,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createHash, createHmac } from 'node:crypto';
|
|
2
|
+
import { timingSafeEqual } from 'crypto';
|
|
3
|
+
const REQUEST_LIFETIME = 5 * 60 * 1000;
|
|
4
|
+
export const hmacSignatureVerifyTokenRequest = (edgeService) => {
|
|
5
|
+
return async (req, res, next) => {
|
|
6
|
+
try {
|
|
7
|
+
const auth = req.headers.authorization || '';
|
|
8
|
+
const m = auth.match(/^HMAC ([^:]+):(.+)$/);
|
|
9
|
+
if (!m) {
|
|
10
|
+
res.status(401).json({
|
|
11
|
+
error: 'Missing HMAC authorization header',
|
|
12
|
+
});
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const clientId = m[1];
|
|
16
|
+
const providedSig = m[2];
|
|
17
|
+
const timestamp = req.headers['x-timestamp'];
|
|
18
|
+
const nonce = req.headers['x-nonce'];
|
|
19
|
+
const bodyHash = req.headers['content-sha256'];
|
|
20
|
+
if (!timestamp || !nonce || !bodyHash) {
|
|
21
|
+
res.status(401).json({ error: 'Missing content headers' });
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
const ts = Date.parse(timestamp);
|
|
26
|
+
if (Math.abs(now - ts) > REQUEST_LIFETIME) {
|
|
27
|
+
res.status(401).json({ error: 'Stale request' });
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const safeToUse = await edgeService.notSeenBefore({
|
|
31
|
+
clientId,
|
|
32
|
+
nonce,
|
|
33
|
+
expiresAt: new Date(now + 5 * 60 * 1000),
|
|
34
|
+
});
|
|
35
|
+
if (!safeToUse) {
|
|
36
|
+
res.status(401).json({ error: 'Replay detected' });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const client = await edgeService.loadClient(clientId);
|
|
40
|
+
if (!client) {
|
|
41
|
+
res.status(401).json({ error: 'Unknown client' });
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const bodyAsString = JSON.stringify(req.body || '');
|
|
45
|
+
const computedHash = createHash('sha256')
|
|
46
|
+
.update(bodyAsString)
|
|
47
|
+
.digest('hex');
|
|
48
|
+
if (computedHash !== bodyHash) {
|
|
49
|
+
res.status(401).json({ error: 'Body tampering detected' });
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const canonical = req.method.toUpperCase() +
|
|
53
|
+
'\n' +
|
|
54
|
+
'/edge/issue-token' +
|
|
55
|
+
'\n' +
|
|
56
|
+
timestamp +
|
|
57
|
+
'\n' +
|
|
58
|
+
nonce +
|
|
59
|
+
'\n' +
|
|
60
|
+
bodyHash;
|
|
61
|
+
const secret = edgeService
|
|
62
|
+
.decryptedClientSecret(client)
|
|
63
|
+
.toString('utf-8');
|
|
64
|
+
const expectedSig = createHmac('sha256', Buffer.from(secret, 'base64url'))
|
|
65
|
+
.update(canonical)
|
|
66
|
+
.digest('base64url');
|
|
67
|
+
if (!timingSafeEqual(Buffer.from(expectedSig), Buffer.from(providedSig))) {
|
|
68
|
+
res.status(401).json({ error: 'Signature mismatch' });
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
res.locals.clientId = clientId;
|
|
72
|
+
next();
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
console.error('Error authenticating HMAC request:', e);
|
|
76
|
+
res.status(401).json({
|
|
77
|
+
error: 'Authenticating request failed',
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=edge-hmac-verifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-hmac-verifier.js","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-hmac-verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EdgeClient, IEdgeTokenStore } from '../../types/stores/edge-store.js';
|
|
2
|
+
import type { Db } from '../../db/db.js';
|
|
3
|
+
import type EventEmitter from 'events';
|
|
4
|
+
import { type IApiToken, type IUnleashConfig } from '../../types/index.js';
|
|
5
|
+
export declare class EdgeTokenStore implements IEdgeTokenStore {
|
|
6
|
+
private db;
|
|
7
|
+
private readonly timer;
|
|
8
|
+
constructor(db: Db, eventBus: EventEmitter, { getLogger }: Pick<IUnleashConfig, 'getLogger'>);
|
|
9
|
+
registerNonce(clientId: string, nonce: string, expiresAt: Date): Promise<void>;
|
|
10
|
+
saveToken(clientId: string, apiToken: IApiToken): Promise<void>;
|
|
11
|
+
getToken(clientId: string, environment: string, projects: string[]): Promise<IApiToken | undefined>;
|
|
12
|
+
loadClient(clientId: string): Promise<EdgeClient | undefined>;
|
|
13
|
+
saveClient(clientId: string, secretEnc: Buffer): Promise<void>;
|
|
14
|
+
cleanExpiredNonces(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=edge-token-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-token-store.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-token-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EACV,eAAe,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAGvC,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,cAAc,EACtB,MAAM,sBAAsB,CAAC;AAmB9B,qBAAa,cAAe,YAAW,eAAe;IAClD,OAAO,CAAC,EAAE,CAAK;IAEf,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;gBAG7B,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,YAAY,EACtB,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;IAU9C,aAAa,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,GAChB,OAAO,CAAC,IAAI,CAAC;IAUV,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/D,QAAQ,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IA8B3B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAY7D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import metricsHelper from '../../util/metrics-helper.js';
|
|
2
|
+
import { DB_TIME } from '../../metric-events.js';
|
|
3
|
+
import { ApiTokenType, } from '../../types/index.js';
|
|
4
|
+
import { scopeHash } from './edge-tokens.js';
|
|
5
|
+
import { ulid } from 'ulidx';
|
|
6
|
+
const T = {
|
|
7
|
+
apiTokens: 'api_tokens',
|
|
8
|
+
edgeApiTokens: 'edge_api_tokens',
|
|
9
|
+
edgeHmacClients: 'edge_hmac_clients',
|
|
10
|
+
edgeHmacNonces: 'edge_hmac_nonces',
|
|
11
|
+
};
|
|
12
|
+
export class EdgeTokenStore {
|
|
13
|
+
constructor(db, eventBus, { getLogger }) {
|
|
14
|
+
this.db = db;
|
|
15
|
+
this.timer = (action) => metricsHelper.wrapTimer(eventBus, DB_TIME, {
|
|
16
|
+
store: 'edge-store',
|
|
17
|
+
action,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async registerNonce(clientId, nonce, expiresAt) {
|
|
21
|
+
const stop = this.timer('check_nonce');
|
|
22
|
+
await this.db(T.edgeHmacNonces).insert({
|
|
23
|
+
client_id: clientId,
|
|
24
|
+
nonce,
|
|
25
|
+
expires_at: expiresAt,
|
|
26
|
+
});
|
|
27
|
+
stop();
|
|
28
|
+
}
|
|
29
|
+
async saveToken(clientId, apiToken) {
|
|
30
|
+
const stop = this.timer('save_token');
|
|
31
|
+
const hash = scopeHash(apiToken.environment, apiToken.projects);
|
|
32
|
+
await this.db(T.edgeApiTokens).insert({
|
|
33
|
+
id: ulid(),
|
|
34
|
+
client_id: clientId,
|
|
35
|
+
environment: apiToken.environment,
|
|
36
|
+
projects: JSON.stringify(apiToken.projects),
|
|
37
|
+
scope_hash: hash,
|
|
38
|
+
token_value: apiToken.secret,
|
|
39
|
+
});
|
|
40
|
+
stop();
|
|
41
|
+
}
|
|
42
|
+
async getToken(clientId, environment, projects) {
|
|
43
|
+
const stop = this.timer('get_token');
|
|
44
|
+
const hash = scopeHash(environment, projects);
|
|
45
|
+
const tokens = await this.db(T.edgeApiTokens)
|
|
46
|
+
.where('client_id', clientId)
|
|
47
|
+
.andWhere('scope_hash', hash)
|
|
48
|
+
.leftJoin(T.apiTokens, 'token_value', `${T.apiTokens}.secret`)
|
|
49
|
+
.select([
|
|
50
|
+
`${T.edgeApiTokens}.environment`,
|
|
51
|
+
`${T.edgeApiTokens}.projects`,
|
|
52
|
+
`${T.edgeApiTokens}.token_value`,
|
|
53
|
+
`${T.edgeApiTokens}.created_at`,
|
|
54
|
+
`${T.apiTokens}.token_name`,
|
|
55
|
+
]);
|
|
56
|
+
stop();
|
|
57
|
+
if (tokens && tokens.length > 0) {
|
|
58
|
+
const token = tokens[0];
|
|
59
|
+
return {
|
|
60
|
+
createdAt: token.created_at,
|
|
61
|
+
projects: token.projects,
|
|
62
|
+
project: '',
|
|
63
|
+
environment: token.environment,
|
|
64
|
+
secret: token.token_value,
|
|
65
|
+
type: ApiTokenType.BACKEND,
|
|
66
|
+
tokenName: token.token_name,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
async loadClient(clientId) {
|
|
72
|
+
const stop = this.timer('load_client');
|
|
73
|
+
const client = await this.db(T.edgeHmacClients)
|
|
74
|
+
.where({ id: clientId })
|
|
75
|
+
.select('id', 'secret_enc');
|
|
76
|
+
stop();
|
|
77
|
+
if (client && client.length > 0) {
|
|
78
|
+
return client[0];
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
async saveClient(clientId, secretEnc) {
|
|
83
|
+
const stop = this.timer('save_client');
|
|
84
|
+
await this.db(T.edgeHmacClients)
|
|
85
|
+
.insert({
|
|
86
|
+
id: clientId,
|
|
87
|
+
secret_enc: secretEnc,
|
|
88
|
+
})
|
|
89
|
+
.onConflict(['id'])
|
|
90
|
+
.merge({ secret_enc: secretEnc, created_at: new Date() });
|
|
91
|
+
stop();
|
|
92
|
+
}
|
|
93
|
+
async cleanExpiredNonces() {
|
|
94
|
+
const stop = this.timer('clean_expired_nonces');
|
|
95
|
+
await this.db(T.edgeHmacNonces)
|
|
96
|
+
.where('expires_at', '<', new Date())
|
|
97
|
+
.delete();
|
|
98
|
+
stop();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=edge-token-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-token-store.js","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-token-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tokens.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-tokens.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,GAAI,aAAa,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,MAYnE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
export const scopeHash = (environment, projects) => {
|
|
3
|
+
let hash = createHash('sha256').update(environment);
|
|
4
|
+
const wildcard = projects.find((p) => p === '*');
|
|
5
|
+
if (wildcard !== undefined) {
|
|
6
|
+
hash = hash.update('[*]');
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
const sorted = projects.sort();
|
|
10
|
+
sorted.forEach((project) => {
|
|
11
|
+
hash = hash.update(`[${project}]`);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return hash.digest('base64url');
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=edge-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tokens.js","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,WAAmB,EAAE,QAAkB,EAAU,EAAE;IACzE,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tokens.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-tokens.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { scopeHash } from './edge-tokens.js';
|
|
2
|
+
describe('Scope hashing tokens', () => {
|
|
3
|
+
test(`order of projects doesn't matter`, () => {
|
|
4
|
+
const first = scopeHash('development', ['a', 'c', 'd']);
|
|
5
|
+
const second = scopeHash('development', ['d', 'a', 'c']);
|
|
6
|
+
expect(first).toStrictEqual(second);
|
|
7
|
+
});
|
|
8
|
+
test('Same project list but different environment should be different', () => {
|
|
9
|
+
const projects = ['projecta', 'default', 'eg', 'dx'];
|
|
10
|
+
const devHash = scopeHash('development', projects);
|
|
11
|
+
const prodHash = scopeHash('production', projects);
|
|
12
|
+
expect(devHash).not.toStrictEqual(prodHash);
|
|
13
|
+
});
|
|
14
|
+
test('If wildcard project is in list, rest of project list is not relevant', () => {
|
|
15
|
+
const projects = ['projecta', 'projectb', '*'];
|
|
16
|
+
const otherList = ['eg', 'dx', '*'];
|
|
17
|
+
const projectsHash = scopeHash('development', projects);
|
|
18
|
+
const otherHash = scopeHash('development', otherList);
|
|
19
|
+
expect(projectsHash).toStrictEqual(otherHash);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=edge-tokens.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tokens.test.js","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-tokens.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-verification.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-verification.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY1E;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAa5E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { randomBytes, createCipheriv, createDecipheriv } from 'node:crypto';
|
|
2
|
+
const IV_LEN = 12;
|
|
3
|
+
const TAG_LEN = 16;
|
|
4
|
+
export function decryptSecret(masterKey, secretEnc) {
|
|
5
|
+
if (!Buffer.isBuffer(secretEnc)) {
|
|
6
|
+
throw new Error('secretEnc must be a buffer');
|
|
7
|
+
}
|
|
8
|
+
const iv = secretEnc.subarray(0, IV_LEN);
|
|
9
|
+
const tag = secretEnc.subarray(secretEnc.length - TAG_LEN);
|
|
10
|
+
const cipher = secretEnc.subarray(IV_LEN, secretEnc.length - TAG_LEN);
|
|
11
|
+
const decipher = createDecipheriv('aes-256-gcm', masterKey, iv);
|
|
12
|
+
decipher.setAuthTag(tag);
|
|
13
|
+
return Buffer.concat([decipher.update(cipher), decipher.final()]);
|
|
14
|
+
}
|
|
15
|
+
export function encryptSecret(masterKey, secretPlain) {
|
|
16
|
+
const iv = randomBytes(12);
|
|
17
|
+
const cipher = createCipheriv('aes-256-gcm', masterKey, iv);
|
|
18
|
+
const ciphertext = Buffer.concat([
|
|
19
|
+
cipher.update(secretPlain, 'utf8'),
|
|
20
|
+
cipher.final(),
|
|
21
|
+
]);
|
|
22
|
+
const tag = cipher.getAuthTag();
|
|
23
|
+
return Buffer.concat([iv, ciphertext, tag]);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=edge-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-verification.js","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,SAAiB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,WAAmB;IAChE,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAEhC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-verification.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-verification.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { decryptSecret, encryptSecret } from './edge-verification.js';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
test('decrypt/encrypt round trip works', () => {
|
|
4
|
+
const clientSecret = 'enterprise-edge-secret';
|
|
5
|
+
const masterSecret = 'EzyLvZ7WF22dH8LzKg4Sk8cMvqzspAm4s6RlmniATT4=';
|
|
6
|
+
const masterBuffer = Buffer.from(masterSecret, 'base64');
|
|
7
|
+
const encrypted = encryptSecret(masterBuffer, clientSecret);
|
|
8
|
+
const decrypted = decryptSecret(masterBuffer, encrypted);
|
|
9
|
+
expect(decrypted.toString('utf-8')).toBe(clientSecret);
|
|
10
|
+
});
|
|
11
|
+
test('decrypt/encrypt with random strings also works', () => {
|
|
12
|
+
const clientSecret = randomBytes(32).toString('base64url');
|
|
13
|
+
const masterSecret = randomBytes(32);
|
|
14
|
+
const encrypted = encryptSecret(masterSecret, clientSecret);
|
|
15
|
+
const decrypted = decryptSecret(masterSecret, encrypted);
|
|
16
|
+
expect(decrypted.toString('utf-8')).toEqual(clientSecret);
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=edge-verification.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-verification.test.js","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/edge-verification.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC1C,MAAM,YAAY,GAAG,wBAAwB,CAAC;IAC9C,MAAM,YAAY,GAAG,8CAA8C,CAAC;IACpE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACxD,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IApiToken, IEdgeTokenStore } from '../../types/index.js';
|
|
2
|
+
import type { EdgeClient } from '../../types/stores/edge-store.js';
|
|
3
|
+
export declare class FakeEdgeTokenStore implements IEdgeTokenStore {
|
|
4
|
+
registerNonce(clientId: string, nonce: string, expiresAt: Date): Promise<void>;
|
|
5
|
+
getToken(clientId: string, environment: string, projects: string[]): Promise<IApiToken | undefined>;
|
|
6
|
+
loadClient(clientId: string): Promise<EdgeClient | undefined>;
|
|
7
|
+
saveToken(clientId: string, token: IApiToken): Promise<void>;
|
|
8
|
+
saveClient(clientId: string, secretEnc: Buffer): Promise<void>;
|
|
9
|
+
cleanExpiredNonces(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=fake-edge-token-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-edge-token-store.d.ts","sourceRoot":"","sources":["../../../../src/lib/features/edgetokens/fake-edge-token-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,qBAAa,kBAAmB,YAAW,eAAe;IACtD,aAAa,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB,QAAQ,CACJ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAIjC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAI7D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
|