unleash-server 5.4.4 → 5.5.1
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 +5 -3
- package/dist/lib/addons/addon-schema.js +2 -1
- package/dist/lib/addons/addon-schema.js.map +1 -1
- package/dist/lib/addons/datadog-definition.js +22 -7
- package/dist/lib/addons/datadog-definition.js.map +1 -1
- package/dist/lib/addons/datadog.d.ts +7 -1
- package/dist/lib/addons/datadog.js +16 -3
- package/dist/lib/addons/datadog.js.map +1 -1
- package/dist/lib/addons/datadog.test.js +62 -0
- package/dist/lib/addons/datadog.test.js.map +1 -1
- package/dist/lib/addons/index.js +3 -11
- package/dist/lib/addons/index.js.map +1 -1
- package/dist/lib/addons/slack-app-definition.js +5 -24
- package/dist/lib/addons/slack-app-definition.js.map +1 -1
- package/dist/lib/addons/slack-app.d.ts +0 -1
- package/dist/lib/addons/slack-app.js +5 -17
- package/dist/lib/addons/slack-app.js.map +1 -1
- package/dist/lib/addons/slack-app.test.js +39 -25
- package/dist/lib/addons/slack-app.test.js.map +1 -1
- package/dist/lib/addons/slack-definition.js +11 -4
- package/dist/lib/addons/slack-definition.js.map +1 -1
- package/dist/lib/addons/teams-definition.js +5 -4
- package/dist/lib/addons/teams-definition.js.map +1 -1
- package/dist/lib/addons/webhook-definition.js +10 -12
- package/dist/lib/addons/webhook-definition.js.map +1 -1
- package/dist/lib/create-config.js +13 -1
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/create-config.test.js +14 -0
- package/dist/lib/create-config.test.js.map +1 -1
- package/dist/lib/db/access-store.d.ts +23 -5
- package/dist/lib/db/access-store.js +263 -17
- package/dist/lib/db/access-store.js.map +1 -1
- package/dist/lib/db/access-store.test.js +83 -0
- package/dist/lib/db/access-store.test.js.map +1 -0
- package/dist/lib/db/client-applications-store.d.ts +1 -3
- package/dist/lib/db/client-applications-store.js +13 -24
- package/dist/lib/db/client-applications-store.js.map +1 -1
- package/dist/lib/db/event-store.d.ts +1 -1
- package/dist/lib/db/event-store.js +5 -1
- package/dist/lib/db/event-store.js.map +1 -1
- package/dist/lib/db/event-store.test.js +32 -0
- package/dist/lib/db/event-store.test.js.map +1 -1
- package/dist/lib/db/feature-toggle-client-store.js +17 -4
- package/dist/lib/db/feature-toggle-client-store.js.map +1 -1
- package/dist/lib/db/feature-toggle-store.js +1 -1
- package/dist/lib/db/feature-toggle-store.js.map +1 -1
- package/dist/lib/db/group-store.d.ts +4 -2
- package/dist/lib/db/group-store.js +24 -0
- package/dist/lib/db/group-store.js.map +1 -1
- package/dist/lib/db/index.d.ts +1 -2
- package/dist/lib/db/index.js +5 -1
- package/dist/lib/db/index.js.map +1 -1
- package/dist/lib/db/project-stats-store.d.ts +2 -0
- package/dist/lib/db/project-stats-store.js +27 -0
- package/dist/lib/db/project-stats-store.js.map +1 -1
- package/dist/lib/db/project-store.d.ts +7 -1
- package/dist/lib/db/project-store.js +34 -1
- package/dist/lib/db/project-store.js.map +1 -1
- package/dist/lib/error/bad-data-error.d.ts +1 -1
- package/dist/lib/error/index.d.ts +2 -1
- package/dist/lib/error/index.js +3 -1
- package/dist/lib/error/index.js.map +1 -1
- package/dist/lib/error/pattern-error.d.ts +10 -0
- package/dist/lib/error/pattern-error.js +20 -0
- package/dist/lib/error/pattern-error.js.map +1 -0
- package/dist/lib/features/dependent-features/createDependentFeaturesService.d.ts +3 -0
- package/dist/lib/features/dependent-features/createDependentFeaturesService.js +11 -0
- package/dist/lib/features/dependent-features/createDependentFeaturesService.js.map +1 -0
- package/dist/lib/features/dependent-features/dependent-features-controller.d.ts +28 -0
- package/dist/lib/features/dependent-features/dependent-features-controller.js +151 -0
- package/dist/lib/features/dependent-features/dependent-features-controller.js.map +1 -0
- package/dist/lib/features/dependent-features/dependent-features-service.d.ts +11 -0
- package/dist/lib/features/dependent-features/dependent-features-service.js +40 -0
- package/dist/lib/features/dependent-features/dependent-features-service.js.map +1 -0
- package/dist/lib/features/dependent-features/dependent-features-store-type.d.ts +8 -0
- package/dist/lib/features/dependent-features/dependent-features-store-type.js +3 -0
- package/dist/lib/features/dependent-features/dependent-features-store-type.js.map +1 -0
- package/dist/lib/features/dependent-features/dependent-features-store.d.ts +12 -0
- package/dist/lib/features/dependent-features/dependent-features-store.js +56 -0
- package/dist/lib/features/dependent-features/dependent-features-store.js.map +1 -0
- package/dist/lib/features/dependent-features/dependent-features.d.ts +14 -0
- package/dist/lib/features/dependent-features/dependent-features.js +3 -0
- package/dist/lib/features/dependent-features/dependent-features.js.map +1 -0
- package/dist/lib/features/dependent-features/dependent.features.e2e.test.d.ts +1 -0
- package/dist/lib/features/dependent-features/dependent.features.e2e.test.js +82 -0
- package/dist/lib/features/dependent-features/dependent.features.e2e.test.js.map +1 -0
- package/dist/lib/features/dependent-features/fake-dependent-features-store.d.ts +8 -0
- package/dist/lib/features/dependent-features/fake-dependent-features-store.js +22 -0
- package/dist/lib/features/dependent-features/fake-dependent-features-store.js.map +1 -0
- package/dist/lib/features/export-import-toggles/createExportImportService.js +6 -3
- package/dist/lib/features/export-import-toggles/createExportImportService.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-service.d.ts +9 -3
- package/dist/lib/features/export-import-toggles/export-import-service.js +51 -21
- package/dist/lib/features/export-import-toggles/export-import-service.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import.e2e.test.js +120 -50
- package/dist/lib/features/export-import-toggles/export-import.e2e.test.js.map +1 -1
- package/dist/lib/features/export-import-toggles/import-permissions-service.d.ts +1 -2
- package/dist/lib/features/export-import-toggles/import-toggles-store-type.d.ts +6 -0
- package/dist/lib/features/export-import-toggles/import-toggles-store.d.ts +2 -1
- package/dist/lib/features/export-import-toggles/import-toggles-store.js +25 -0
- package/dist/lib/features/export-import-toggles/import-toggles-store.js.map +1 -1
- package/dist/lib/features/export-import-toggles/import-validation-messages.d.ts +18 -2
- package/dist/lib/features/export-import-toggles/import-validation-messages.js +27 -11
- package/dist/lib/features/export-import-toggles/import-validation-messages.js.map +1 -1
- package/dist/lib/features/feature-naming-pattern/feature-naming-validation.d.ts +14 -0
- package/dist/lib/features/feature-naming-pattern/feature-naming-validation.js +46 -0
- package/dist/lib/features/feature-naming-pattern/feature-naming-validation.js.map +1 -0
- package/dist/lib/features/feature-naming-pattern/feature-naming-validation.test.d.ts +1 -0
- package/dist/lib/features/feature-naming-pattern/feature-naming-validation.test.js +116 -0
- package/dist/lib/features/feature-naming-pattern/feature-naming-validation.test.js.map +1 -0
- package/dist/lib/features/feature-toggle/createFeatureToggleService.js +11 -2
- package/dist/lib/features/feature-toggle/createFeatureToggleService.js.map +1 -1
- package/dist/lib/features/instance-stats/getActiveUsers.d.ts +9 -0
- package/dist/lib/features/instance-stats/getActiveUsers.e2e.test.d.ts +1 -0
- package/dist/lib/features/instance-stats/getActiveUsers.e2e.test.js +141 -0
- package/dist/lib/features/instance-stats/getActiveUsers.e2e.test.js.map +1 -0
- package/dist/lib/features/instance-stats/getActiveUsers.js +33 -0
- package/dist/lib/features/instance-stats/getActiveUsers.js.map +1 -0
- package/dist/lib/{services → features/instance-stats}/instance-stats-service.d.ts +13 -7
- package/dist/lib/{services → features/instance-stats}/instance-stats-service.js +16 -7
- package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -0
- package/dist/lib/features/instance-stats/instance-stats-service.test.d.ts +1 -0
- package/dist/lib/{services → features/instance-stats}/instance-stats-service.test.js +6 -5
- package/dist/lib/features/instance-stats/instance-stats-service.test.js.map +1 -0
- package/dist/lib/features/playground/advanced-playground.test.js +2 -3
- package/dist/lib/features/playground/advanced-playground.test.js.map +1 -1
- package/dist/lib/features/playground/feature-evaluator/variant.d.ts +1 -1
- package/dist/lib/features/playground/generateObjectCombinations.d.ts +1 -1
- package/dist/lib/features/playground/generateObjectCombinations.js +14 -4
- package/dist/lib/features/playground/generateObjectCombinations.js.map +1 -1
- package/dist/lib/features/playground/generateObjectCombinations.test.js +21 -0
- package/dist/lib/features/playground/generateObjectCombinations.test.js.map +1 -1
- package/dist/lib/features/playground/playground-service.d.ts +5 -3
- package/dist/lib/features/playground/playground-service.js +18 -3
- package/dist/lib/features/playground/playground-service.js.map +1 -1
- package/dist/lib/features/playground/playground.d.ts +2 -1
- package/dist/lib/features/playground/playground.js +2 -1
- package/dist/lib/features/playground/playground.js.map +1 -1
- package/dist/lib/features/private-project/createPrivateProjectChecker.d.ts +5 -0
- package/dist/lib/features/private-project/createPrivateProjectChecker.js +22 -0
- package/dist/lib/features/private-project/createPrivateProjectChecker.js.map +1 -0
- package/dist/lib/features/private-project/fakePrivateProjectChecker.d.ts +7 -0
- package/dist/lib/features/private-project/fakePrivateProjectChecker.js +15 -0
- package/dist/lib/features/private-project/fakePrivateProjectChecker.js.map +1 -0
- package/dist/lib/features/private-project/privateProjectChecker.d.ts +10 -0
- package/dist/lib/features/private-project/privateProjectChecker.js +22 -0
- package/dist/lib/features/private-project/privateProjectChecker.js.map +1 -0
- package/dist/lib/features/private-project/privateProjectCheckerType.d.ts +5 -0
- package/dist/lib/features/private-project/privateProjectCheckerType.js +3 -0
- package/dist/lib/features/private-project/privateProjectCheckerType.js.map +1 -0
- package/dist/lib/features/private-project/privateProjectStore.d.ts +18 -0
- package/dist/lib/features/private-project/privateProjectStore.js +70 -0
- package/dist/lib/features/private-project/privateProjectStore.js.map +1 -0
- package/dist/lib/features/private-project/privateProjectStoreType.d.ts +4 -0
- package/dist/lib/features/private-project/privateProjectStoreType.js +3 -0
- package/dist/lib/features/private-project/privateProjectStoreType.js.map +1 -0
- package/dist/lib/features/project/createProjectService.js +5 -8
- package/dist/lib/features/project/createProjectService.js.map +1 -1
- package/dist/lib/features/segment/createSegmentService.js +5 -2
- package/dist/lib/features/segment/createSegmentService.js.map +1 -1
- package/dist/lib/features/segment/segment-controller.d.ts +39 -0
- package/dist/lib/features/segment/segment-controller.js +291 -0
- package/dist/lib/features/segment/segment-controller.js.map +1 -0
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/metrics.js +30 -1
- package/dist/lib/metrics.js.map +1 -1
- package/dist/lib/metrics.test.js +3 -2
- package/dist/lib/metrics.test.js.map +1 -1
- package/dist/lib/middleware/rbac-middleware.d.ts +2 -0
- package/dist/lib/middleware/rbac-middleware.js +2 -0
- package/dist/lib/middleware/rbac-middleware.js.map +1 -1
- package/dist/lib/middleware/secure-headers.js +18 -0
- package/dist/lib/middleware/secure-headers.js.map +1 -1
- package/dist/lib/openapi/index.js +13 -0
- package/dist/lib/openapi/index.js.map +1 -1
- package/dist/lib/openapi/meta-schema-rules.test.js +14 -4
- package/dist/lib/openapi/meta-schema-rules.test.js.map +1 -1
- package/dist/lib/openapi/spec/addon-type-schema.d.ts +6 -1
- package/dist/lib/openapi/spec/addon-type-schema.js +6 -1
- package/dist/lib/openapi/spec/addon-type-schema.js.map +1 -1
- package/dist/lib/openapi/spec/addons-schema.d.ts +8 -3
- package/dist/lib/openapi/spec/addons-schema.js +8 -3
- package/dist/lib/openapi/spec/addons-schema.js.map +1 -1
- package/dist/lib/openapi/spec/admin-segment-schema.d.ts +115 -0
- package/dist/lib/openapi/spec/admin-segment-schema.js +75 -0
- package/dist/lib/openapi/spec/admin-segment-schema.js.map +1 -0
- package/dist/lib/openapi/spec/admin-segment-schema.test.d.ts +1 -0
- package/dist/lib/openapi/spec/admin-segment-schema.test.js +39 -0
- package/dist/lib/openapi/spec/admin-segment-schema.test.js.map +1 -0
- package/dist/lib/openapi/spec/admin-strategies-schema.d.ts +46 -0
- package/dist/lib/openapi/spec/admin-strategies-schema.js +54 -0
- package/dist/lib/openapi/spec/admin-strategies-schema.js.map +1 -0
- package/dist/lib/openapi/spec/admin-strategies-schema.test.d.ts +1 -0
- package/dist/lib/openapi/spec/admin-strategies-schema.test.js +40 -0
- package/dist/lib/openapi/spec/admin-strategies-schema.test.js.map +1 -0
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts +51 -6
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js +3 -1
- package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts +101 -11
- package/dist/lib/openapi/spec/advanced-playground-feature-schema.js +2 -0
- package/dist/lib/openapi/spec/advanced-playground-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/advanced-playground-request-schema.d.ts +1 -0
- package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts +203 -22
- package/dist/lib/openapi/spec/advanced-playground-response-schema.js +2 -0
- package/dist/lib/openapi/spec/advanced-playground-response-schema.js.map +1 -1
- package/dist/lib/openapi/spec/client-feature-schema.d.ts +41 -6
- package/dist/lib/openapi/spec/client-feature-schema.js +9 -0
- package/dist/lib/openapi/spec/client-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/client-features-schema.d.ts +75 -12
- package/dist/lib/openapi/spec/client-features-schema.js +2 -0
- package/dist/lib/openapi/spec/client-features-schema.js.map +1 -1
- package/dist/lib/openapi/spec/context-field-strategies-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/context-field-strategies-schema.js +1 -1
- package/dist/lib/openapi/spec/context-field-strategies-schema.js.map +1 -1
- package/dist/lib/openapi/spec/create-api-token-schema.d.ts +1 -139
- package/dist/lib/openapi/spec/create-api-token-schema.js +16 -20
- package/dist/lib/openapi/spec/create-api-token-schema.js.map +1 -1
- package/dist/lib/openapi/spec/create-dependent-feature-schema.d.ts +29 -0
- package/dist/lib/openapi/spec/create-dependent-feature-schema.js +31 -0
- package/dist/lib/openapi/spec/create-dependent-feature-schema.js.map +1 -0
- package/dist/lib/openapi/spec/create-feature-naming-pattern-schema.d.ts +29 -0
- package/dist/lib/openapi/spec/create-feature-naming-pattern-schema.js +33 -0
- package/dist/lib/openapi/spec/create-feature-naming-pattern-schema.js.map +1 -0
- package/dist/lib/openapi/spec/create-feature-strategy-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/create-strategy-schema.d.ts +15 -0
- package/dist/lib/openapi/spec/create-strategy-schema.js +15 -0
- package/dist/lib/openapi/spec/create-strategy-schema.js.map +1 -1
- package/dist/lib/openapi/spec/create-strategy-variant-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/create-strategy-variant-schema.js +2 -2
- package/dist/lib/openapi/spec/create-strategy-variant-schema.js.map +1 -1
- package/dist/lib/openapi/spec/dependent-feature-schema.d.ts +30 -0
- package/dist/lib/openapi/spec/dependent-feature-schema.js +14 -0
- package/dist/lib/openapi/spec/dependent-feature-schema.js.map +1 -0
- package/dist/lib/openapi/spec/dora-features-schema.d.ts +20 -0
- package/dist/lib/openapi/spec/dora-features-schema.js +22 -0
- package/dist/lib/openapi/spec/dora-features-schema.js.map +1 -0
- package/dist/lib/openapi/spec/environment-project-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/environments-project-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/event-schema.d.ts +3 -3
- package/dist/lib/openapi/spec/events-schema.d.ts +3 -3
- package/dist/lib/openapi/spec/export-query-schema.d.ts +22 -15
- package/dist/lib/openapi/spec/export-query-schema.js +16 -15
- package/dist/lib/openapi/spec/export-query-schema.js.map +1 -1
- package/dist/lib/openapi/spec/export-result-schema.d.ts +26 -26
- package/dist/lib/openapi/spec/feature-environment-schema.d.ts +6 -6
- package/dist/lib/openapi/spec/feature-events-schema.d.ts +3 -3
- package/dist/lib/openapi/spec/feature-schema.d.ts +12 -12
- package/dist/lib/openapi/spec/feature-strategy-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/feature-variants-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/features-schema.d.ts +24 -24
- package/dist/lib/openapi/spec/health-overview-schema.d.ts +63 -33
- package/dist/lib/openapi/spec/health-overview-schema.js +6 -1
- package/dist/lib/openapi/spec/health-overview-schema.js.map +1 -1
- package/dist/lib/openapi/spec/health-report-schema.d.ts +63 -33
- package/dist/lib/openapi/spec/import-toggles-schema.d.ts +52 -52
- package/dist/lib/openapi/spec/index.d.ts +9 -0
- package/dist/lib/openapi/spec/index.js +9 -0
- package/dist/lib/openapi/spec/index.js.map +1 -1
- package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts +42 -0
- package/dist/lib/openapi/spec/instance-admin-stats-schema.js +42 -0
- package/dist/lib/openapi/spec/instance-admin-stats-schema.js.map +1 -1
- package/dist/lib/openapi/spec/parent-feature-options-schema.d.ts +11 -0
- package/dist/lib/openapi/spec/parent-feature-options-schema.js +13 -0
- package/dist/lib/openapi/spec/parent-feature-options-schema.js.map +1 -0
- package/dist/lib/openapi/spec/playground-feature-schema.d.ts +5 -5
- package/dist/lib/openapi/spec/playground-request-schema.d.ts +1 -0
- package/dist/lib/openapi/spec/playground-response-schema.d.ts +12 -10
- package/dist/lib/openapi/spec/playground-strategy-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/playground-strategy-schema.js +1 -1
- package/dist/lib/openapi/spec/playground-strategy-schema.js.map +1 -1
- package/dist/lib/openapi/spec/profile-schema.d.ts +12 -12
- package/dist/lib/openapi/spec/project-dora-metrics-schema.d.ts +44 -0
- package/dist/lib/openapi/spec/project-dora-metrics-schema.js +28 -0
- package/dist/lib/openapi/spec/project-dora-metrics-schema.js.map +1 -0
- package/dist/lib/openapi/spec/project-environment-schema.d.ts +4 -4
- package/dist/lib/openapi/spec/project-overview-schema.d.ts +63 -33
- package/dist/lib/openapi/spec/project-overview-schema.js +6 -1
- package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
- package/dist/lib/openapi/spec/project-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/project-schema.js +1 -1
- package/dist/lib/openapi/spec/project-schema.js.map +1 -1
- package/dist/lib/openapi/spec/projects-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/push-variants-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/sdk-context-schema.d.ts +1 -0
- package/dist/lib/openapi/spec/sdk-context-schema.js +1 -0
- package/dist/lib/openapi/spec/sdk-context-schema.js.map +1 -1
- package/dist/lib/openapi/spec/sdk-flat-context-schema.d.ts +46 -0
- package/dist/lib/openapi/spec/sdk-flat-context-schema.js +15 -0
- package/dist/lib/openapi/spec/sdk-flat-context-schema.js.map +1 -0
- package/dist/lib/openapi/spec/search-events-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/segments-schema.d.ts +177 -0
- package/dist/lib/openapi/spec/segments-schema.js +26 -0
- package/dist/lib/openapi/spec/segments-schema.js.map +1 -0
- package/dist/lib/openapi/spec/segments-schema.test.d.ts +1 -0
- package/dist/lib/openapi/spec/segments-schema.test.js +16 -0
- package/dist/lib/openapi/spec/segments-schema.test.js.map +1 -0
- package/dist/lib/openapi/spec/state-schema.d.ts +23 -23
- package/dist/lib/openapi/spec/strategy-variant-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/update-feature-strategy-segments-schema.d.ts +35 -0
- package/dist/lib/openapi/spec/update-feature-strategy-segments-schema.js +37 -0
- package/dist/lib/openapi/spec/update-feature-strategy-segments-schema.js.map +1 -0
- package/dist/lib/openapi/spec/update-feature-strategy-segments-schema.test.d.ts +1 -0
- package/dist/lib/openapi/spec/update-feature-strategy-segments-schema.test.js +19 -0
- package/dist/lib/openapi/spec/update-feature-strategy-segments-schema.test.js.map +1 -0
- package/dist/lib/openapi/spec/upsert-segment-schema.d.ts +8 -15
- package/dist/lib/openapi/spec/upsert-segment-schema.js +8 -17
- package/dist/lib/openapi/spec/upsert-segment-schema.js.map +1 -1
- package/dist/lib/openapi/spec/upsert-segment-schema.test.d.ts +1 -0
- package/dist/lib/openapi/spec/upsert-segment-schema.test.js +35 -0
- package/dist/lib/openapi/spec/upsert-segment-schema.test.js.map +1 -0
- package/dist/lib/openapi/spec/validate-feature-schema.d.ts +6 -0
- package/dist/lib/openapi/spec/validate-feature-schema.js +6 -0
- package/dist/lib/openapi/spec/validate-feature-schema.js.map +1 -1
- package/dist/lib/openapi/spec/variant-schema.d.ts +2 -2
- package/dist/lib/openapi/spec/variant-schema.js +2 -2
- package/dist/lib/openapi/spec/variant-schema.js.map +1 -1
- package/dist/lib/openapi/spec/variants-schema.d.ts +2 -2
- package/dist/lib/openapi/util/all-of.d.ts +3 -0
- package/dist/lib/openapi/util/all-of.js +34 -0
- package/dist/lib/openapi/util/all-of.js.map +1 -0
- package/dist/lib/openapi/util/openapi-tags.d.ts +46 -58
- package/dist/lib/openapi/util/openapi-tags.js +27 -34
- package/dist/lib/openapi/util/openapi-tags.js.map +1 -1
- package/dist/lib/openapi/util/openapi-tags.test.d.ts +1 -0
- package/dist/lib/openapi/util/openapi-tags.test.js +15 -0
- package/dist/lib/openapi/util/openapi-tags.test.js.map +1 -0
- package/dist/lib/openapi/validate.js +0 -1
- package/dist/lib/openapi/validate.js.map +1 -1
- package/dist/lib/routes/admin-api/archive.d.ts +1 -1
- package/dist/lib/routes/admin-api/archive.js +3 -2
- package/dist/lib/routes/admin-api/archive.js.map +1 -1
- package/dist/lib/routes/admin-api/context.js +2 -1
- package/dist/lib/routes/admin-api/context.js.map +1 -1
- package/dist/lib/routes/admin-api/feature.js +2 -1
- package/dist/lib/routes/admin-api/feature.js.map +1 -1
- package/dist/lib/routes/admin-api/index.js +2 -0
- package/dist/lib/routes/admin-api/index.js.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.d.ts +2 -2
- package/dist/lib/routes/admin-api/instance-admin.js +7 -1
- package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
- package/dist/lib/routes/admin-api/metrics.d.ts +2 -1
- package/dist/lib/routes/admin-api/metrics.js +2 -1
- package/dist/lib/routes/admin-api/metrics.js.map +1 -1
- package/dist/lib/routes/admin-api/project/api-token.d.ts +2 -1
- package/dist/lib/routes/admin-api/project/api-token.js +12 -3
- package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
- package/dist/lib/routes/admin-api/project/environments.d.ts +2 -1
- package/dist/lib/routes/admin-api/project/environments.js +3 -1
- package/dist/lib/routes/admin-api/project/environments.js.map +1 -1
- package/dist/lib/routes/admin-api/project/index.d.ts +2 -1
- package/dist/lib/routes/admin-api/project/index.js +31 -0
- package/dist/lib/routes/admin-api/project/index.js.map +1 -1
- package/dist/lib/routes/admin-api/strategy.d.ts +1 -1
- package/dist/lib/routes/admin-api/strategy.js.map +1 -1
- package/dist/lib/routes/client-api/metrics.js +14 -8
- package/dist/lib/routes/client-api/metrics.js.map +1 -1
- package/dist/lib/routes/client-api/metrics.test.js +27 -0
- package/dist/lib/routes/client-api/metrics.test.js.map +1 -1
- package/dist/lib/routes/controller.d.ts +1 -1
- package/dist/lib/routes/controller.js +17 -10
- package/dist/lib/routes/controller.js.map +1 -1
- package/dist/lib/routes/proxy-api/index.js +5 -0
- package/dist/lib/routes/proxy-api/index.js.map +1 -1
- package/dist/lib/schema/role-schema.js +3 -1
- package/dist/lib/schema/role-schema.js.map +1 -1
- package/dist/lib/schema/role-schema.test.js +1 -1
- package/dist/lib/schema/role-schema.test.js.map +1 -1
- package/dist/lib/segments/segment-service-interface.d.ts +1 -1
- package/dist/lib/services/access-service.d.ts +29 -11
- package/dist/lib/services/access-service.js +53 -10
- package/dist/lib/services/access-service.js.map +1 -1
- package/dist/lib/services/access-service.test.js +2 -1
- package/dist/lib/services/access-service.test.js.map +1 -1
- package/dist/lib/services/addon-service.js +4 -2
- package/dist/lib/services/addon-service.js.map +1 -1
- package/dist/lib/services/addon-service.test.js +65 -0
- package/dist/lib/services/addon-service.test.js.map +1 -1
- package/dist/lib/services/client-metrics/instance-service.d.ts +5 -2
- package/dist/lib/services/client-metrics/instance-service.js +22 -3
- package/dist/lib/services/client-metrics/instance-service.js.map +1 -1
- package/dist/lib/services/client-metrics/instance-service.test.js +5 -4
- package/dist/lib/services/client-metrics/instance-service.test.js.map +1 -1
- package/dist/lib/services/context-service.d.ts +6 -2
- package/dist/lib/services/context-service.js +16 -2
- package/dist/lib/services/context-service.js.map +1 -1
- package/dist/lib/services/feature-service-potentially-stale.test.js +1 -1
- package/dist/lib/services/feature-service-potentially-stale.test.js.map +1 -1
- package/dist/lib/services/feature-toggle-service.d.ts +20 -7
- package/dist/lib/services/feature-toggle-service.js +105 -41
- package/dist/lib/services/feature-toggle-service.js.map +1 -1
- package/dist/lib/services/group-service.d.ts +4 -4
- package/dist/lib/services/group-service.js +17 -16
- package/dist/lib/services/group-service.js.map +1 -1
- package/dist/lib/services/index.d.ts +3 -2
- package/dist/lib/services/index.js +31 -17
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/project-schema.js +9 -1
- package/dist/lib/services/project-schema.js.map +1 -1
- package/dist/lib/services/project-service.d.ts +16 -12
- package/dist/lib/services/project-service.js +127 -17
- package/dist/lib/services/project-service.js.map +1 -1
- package/dist/lib/services/scheduler-service.d.ts +1 -1
- package/dist/lib/services/scheduler-service.js +3 -3
- package/dist/lib/services/scheduler-service.js.map +1 -1
- package/dist/lib/services/scheduler-service.test.js +15 -15
- package/dist/lib/services/scheduler-service.test.js.map +1 -1
- package/dist/lib/services/segment-service.d.ts +4 -2
- package/dist/lib/services/segment-service.js +17 -10
- package/dist/lib/services/segment-service.js.map +1 -1
- package/dist/lib/services/state-service.test.js +13 -3
- package/dist/lib/services/state-service.test.js.map +1 -1
- package/dist/lib/services/version-service.test.js +3 -0
- package/dist/lib/services/version-service.test.js.map +1 -1
- package/dist/lib/types/events.d.ts +60 -1
- package/dist/lib/types/events.js +65 -3
- package/dist/lib/types/events.js.map +1 -1
- package/dist/lib/types/experimental.d.ts +1 -1
- package/dist/lib/types/experimental.js +9 -5
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/lib/types/group.d.ts +2 -2
- package/dist/lib/types/model.d.ts +31 -2
- package/dist/lib/types/model.js.map +1 -1
- package/dist/lib/types/no-auth-user.d.ts +1 -0
- package/dist/lib/types/no-auth-user.js +3 -1
- package/dist/lib/types/no-auth-user.js.map +1 -1
- package/dist/lib/types/option.d.ts +7 -0
- package/dist/lib/types/services.d.ts +6 -1
- package/dist/lib/types/stores/access-store.d.ts +23 -4
- package/dist/lib/types/stores/feature-strategies-store.d.ts +2 -1
- package/dist/lib/types/stores/group-store.d.ts +4 -2
- package/dist/lib/types/stores/project-stats-store-type.d.ts +2 -0
- package/dist/lib/types/stores/project-store.d.ts +7 -14
- package/dist/lib/types/stores/strategy-store.d.ts +3 -17
- package/dist/lib/types/stores.d.ts +5 -1
- package/dist/lib/util/findDuplicates.d.ts +1 -0
- package/dist/lib/util/findDuplicates.js +18 -0
- package/dist/lib/util/findDuplicates.js.map +1 -0
- package/dist/lib/util/findDuplicates.test.d.ts +1 -0
- package/dist/lib/util/findDuplicates.test.js +23 -0
- package/dist/lib/util/findDuplicates.test.js.map +1 -0
- package/dist/migrations/20230830121352-update-client-applications-usage-table.d.ts +2 -0
- package/dist/migrations/20230830121352-update-client-applications-usage-table.js +16 -0
- package/dist/migrations/20230830121352-update-client-applications-usage-table.js.map +1 -0
- package/dist/migrations/20230905122605-add-feature-naming-description.d.ts +2 -0
- package/dist/migrations/20230905122605-add-feature-naming-description.js +13 -0
- package/dist/migrations/20230905122605-add-feature-naming-description.js.map +1 -0
- package/dist/migrations/20230919104006-dependent-features.d.ts +2 -0
- package/dist/migrations/20230919104006-dependent-features.js +21 -0
- package/dist/migrations/20230919104006-dependent-features.js.map +1 -0
- package/dist/migrations/20230927071830-reset-pnps-feedback.d.ts +2 -0
- package/dist/migrations/20230927071830-reset-pnps-feedback.js +10 -0
- package/dist/migrations/20230927071830-reset-pnps-feedback.js.map +1 -0
- package/dist/server-dev.js +7 -4
- package/dist/server-dev.js.map +1 -1
- package/dist/test/e2e/api/admin/addon.e2e.test.js +0 -1
- package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +8 -12
- package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/event.e2e.test.js +9 -2
- package/dist/test/e2e/api/admin/event.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/metrics.e2e.test.js +2 -10
- package/dist/test/e2e/api/admin/metrics.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/environments.e2e.test.js +8 -0
- package/dist/test/e2e/api/admin/project/environments.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/features.e2e.test.js +41 -15
- package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js +30 -3
- package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/segment.e2e.test.d.ts +1 -0
- package/dist/test/e2e/api/admin/segment.e2e.test.js +272 -0
- package/dist/test/e2e/api/admin/segment.e2e.test.js.map +1 -0
- package/dist/test/e2e/api/admin/state.e2e.test.js +0 -11
- package/dist/test/e2e/api/admin/state.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/strategy.e2e.test.js +1 -1
- package/dist/test/e2e/api/client/feature.e2e.test.js +27 -3
- package/dist/test/e2e/api/client/feature.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/feature.token.access.e2e.test.js +2 -2
- package/dist/test/e2e/api/client/feature.token.access.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/client/segment.e2e.test.js +1 -1
- package/dist/test/e2e/api/client/segment.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/proxy/proxy.e2e.test.js +34 -9
- package/dist/test/e2e/api/proxy/proxy.e2e.test.js.map +1 -1
- package/dist/test/e2e/helpers/app.utils.d.ts +6 -0
- package/dist/test/e2e/helpers/app.utils.js +16 -0
- package/dist/test/e2e/helpers/app.utils.js.map +1 -0
- package/dist/test/e2e/helpers/database.json +24 -0
- package/dist/test/e2e/services/access-service.e2e.test.js +549 -135
- package/dist/test/e2e/services/access-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/api-token-service.e2e.test.js +4 -2
- package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/client-metrics-service.e2e.test.js +2 -1
- package/dist/test/e2e/services/client-metrics-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js +38 -5
- package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/group-service.e2e.test.js +16 -11
- package/dist/test/e2e/services/group-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/playground-service.test.js +5 -2
- package/dist/test/e2e/services/playground-service.test.js.map +1 -1
- package/dist/test/e2e/services/project-health-service.e2e.test.js +4 -2
- package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/project-service.e2e.test.js +242 -60
- package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
- package/dist/test/fixtures/access-service-mock.d.ts +3 -4
- package/dist/test/fixtures/access-service-mock.js.map +1 -1
- package/dist/test/fixtures/fake-access-store.d.ts +15 -5
- package/dist/test/fixtures/fake-access-store.js +30 -3
- package/dist/test/fixtures/fake-access-store.js.map +1 -1
- package/dist/test/fixtures/fake-group-store.d.ts +4 -2
- package/dist/test/fixtures/fake-group-store.js +3 -0
- package/dist/test/fixtures/fake-group-store.js.map +1 -1
- package/dist/test/fixtures/fake-project-stats-store.d.ts +1 -0
- package/dist/test/fixtures/fake-project-stats-store.js +3 -0
- package/dist/test/fixtures/fake-project-stats-store.js.map +1 -1
- package/dist/test/fixtures/fake-project-store.d.ts +2 -1
- package/dist/test/fixtures/fake-project-store.js +3 -0
- package/dist/test/fixtures/fake-project-store.js.map +1 -1
- package/dist/test/fixtures/no-logger.d.ts +2 -1
- package/dist/test/fixtures/no-logger.js +8 -4
- package/dist/test/fixtures/no-logger.js.map +1 -1
- package/dist/test/fixtures/store.js +3 -0
- package/dist/test/fixtures/store.js.map +1 -1
- package/frontend/README.md +7 -1
- package/frontend/build/index.html +2 -2
- package/frontend/build/static/{AdvancedPlayground-1748fcdd.js → AdvancedPlayground-aa02fee7.js} +11 -11
- package/frontend/build/static/CreateProject-1e9f20af.js +4 -0
- package/frontend/build/static/{Error-cbce6b64.js → Error-3e2dcc74.js} +1 -1
- package/frontend/build/static/FeatureArchiveDialog-1edc277b.js +10 -0
- package/frontend/build/static/{FeatureMetricsChart-8fd8a304.js → FeatureMetricsChart-67045ba1.js} +2 -2
- package/frontend/build/static/FeatureViewLazyExport-578a84bd.js +7 -0
- package/frontend/build/static/LazyAdminExport-98306920.js +35 -0
- package/frontend/build/static/LazyProjectExport-ebbfce17.js +24 -0
- package/frontend/build/static/Logo-android-218bddbb.svg +1 -0
- package/frontend/build/static/Logo-flutter-cc3c706f.svg +1 -0
- package/frontend/build/static/Logo-go-02475b3d.svg +1 -0
- package/frontend/build/static/Logo-java-6e556b26.svg +1 -0
- package/frontend/build/static/Logo-javascript-caebc06e.svg +1 -0
- package/frontend/build/static/Logo-net-0a33abee.svg +1 -0
- package/frontend/build/static/Logo-node-318ed025.svg +1 -0
- package/frontend/build/static/Logo-php-201f18c3.svg +1 -0
- package/frontend/build/static/Logo-python-4305760e.svg +1 -0
- package/frontend/build/static/Logo-react-18e98687.svg +1 -0
- package/frontend/build/static/Logo-ruby-58f46832.svg +1 -0
- package/frontend/build/static/Logo-rust-c83a80f9.svg +1 -0
- package/frontend/build/static/Logo-svelte-97dcb624.svg +1 -0
- package/frontend/build/static/Logo-swift-315f842b.svg +5 -0
- package/frontend/build/static/Logo-vue-0de73099.svg +1 -0
- package/frontend/build/static/{NetworkOverview-349a7bdd.js → NetworkOverview-0a4063f9.js} +2 -2
- package/frontend/build/static/{NetworkTraffic-60478e50.js → NetworkTraffic-2b9ad0d8.js} +1 -1
- package/frontend/build/static/ReactJSONEditor-95bd65b6.js +129 -0
- package/frontend/build/static/RoleCell-61b5602f.js +1 -0
- package/frontend/build/static/{StrategyItemContainer-a4caeace.js → StrategyItemContainer-1bd0d884.js} +1 -1
- package/frontend/build/static/{chartjs-adapter-date-fns.esm-03d2fbea.js → chartjs-adapter-date-fns.esm-d24144ba.js} +1 -1
- package/frontend/build/static/cr-db7653ac.png +0 -0
- package/frontend/build/static/datadog-543762b6.svg +5 -0
- package/frontend/build/static/edge-daisy-chaining-012bfdef.svg +48 -0
- package/frontend/build/static/edge-mode-5d25949b.svg +22 -0
- package/frontend/build/static/edge-offline-f6a0f761.svg +19 -0
- package/frontend/build/static/{flowchart-elk-definition-170a3958-fc100c77.js → flowchart-elk-definition-170a3958-94e3633c.js} +1 -1
- package/frontend/build/static/{index-866f9bf9.js → index-5f6e673f.js} +1 -1
- package/frontend/build/static/{index-3c63138f.js → index-6d970dd2.js} +1 -1
- package/frontend/build/static/index-fcc452e3.js +463 -0
- package/frontend/build/static/{is_dark-31c253e9.js → is_dark-bdb20af3.js} +1 -1
- package/frontend/build/static/jira-1abe7cbf.svg +17 -0
- package/frontend/build/static/{mindmap-definition-44684416-398682f9.js → mindmap-definition-44684416-c90e3c48.js} +1 -1
- package/frontend/build/static/slack-36ce798a.svg +18 -0
- package/frontend/build/static/style-97d3ef98.css +1 -0
- package/frontend/build/static/teams-4e30b51f.svg +45 -0
- package/frontend/build/static/{timeline-definition-8e5a9bc6-04a0ae08.js → timeline-definition-8e5a9bc6-03e7fdb4.js} +1 -1
- package/frontend/build/static/{unknownify-b8618d88.js → unknownify-e5651baf.js} +1 -1
- package/frontend/build/static/unleash-integration-949d8966.svg +1 -0
- package/frontend/build/static/webhooks-b1b44207.svg +16 -0
- package/frontend/package.json +20 -18
- package/package.json +23 -23
- package/dist/lib/services/instance-stats-service.js.map +0 -1
- package/dist/lib/services/instance-stats-service.test.js.map +0 -1
- package/frontend/build/static/CreateProject-972fa820.js +0 -4
- package/frontend/build/static/FeatureArchiveDialog-8a281845.js +0 -10
- package/frontend/build/static/FeatureViewLazyExport-a215d53b.js +0 -7
- package/frontend/build/static/LazyAdminExport-ba7d55ca.js +0 -35
- package/frontend/build/static/LazyProjectExport-12bccd40.js +0 -17
- package/frontend/build/static/RoleCell-144e7eca.js +0 -1
- package/frontend/build/static/datadog-591b6a73.svg +0 -1
- package/frontend/build/static/index-17d74ac9.js +0 -454
- package/frontend/build/static/slack-c0af31c6.svg +0 -1
- package/frontend/build/static/style-770afaee.css +0 -1
- package/frontend/build/static/teams-62e72076.svg +0 -26
- package/frontend/build/static/webhooks-ffa904ac.svg +0 -1
- /package/dist/lib/{services/instance-stats-service.test.d.ts → db/access-store.test.d.ts} +0 -0
- /package/frontend/build/static/{jira-d9eb9af9.svg → jira-comment-d9eb9af9.svg} +0 -0
package/README.md
CHANGED
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
Unleash is an open source feature management solution. It improves the workflow of your development team and leads to quicker software delivery. Unleash increases efficiency and gives teams _full control_ of how and when they enable new functionality for end users. Unleash lets teams ship code to production in _smaller_ releases _whenever_ they want.
|
|
19
19
|
|
|
20
|
-
Feature
|
|
20
|
+
Feature flags make it easy to test how your code works with real production data without the fear that you'll accidentally break your users' experience. It also helps your team work on multiple features in parallel without each maintaining a separate feature branch.
|
|
21
21
|
|
|
22
|
-
Unleash is the largest open source solution for feature flagging on GitHub. There
|
|
22
|
+
Unleash is the largest open source solution for feature flagging on GitHub. There are 12 official client and server SDKs and 10+ community SDKs available; you can even make your own if you want to. You can use Unleash with any language and any framework.
|
|
23
23
|
|
|
24
24
|
<br/>
|
|
25
25
|
|
|
@@ -103,11 +103,13 @@ We know that learning a new tool can be hard and time-consuming. We have a growi
|
|
|
103
103
|
|
|
104
104
|
📚 [Visit the documentation](https://docs.getunleash.io/) for more in-depth descriptions, how-to guides, and more.
|
|
105
105
|
|
|
106
|
+
📖 Learn more about the principles of building and scaling [feature flag](https://docs.getunleash.io/topics/feature-flags/feature-flag-best-practices) solutions.
|
|
107
|
+
|
|
106
108
|
<br/>
|
|
107
109
|
|
|
108
110
|
## Contribute to Unleash
|
|
109
111
|
|
|
110
|
-
Building Unleash is a collaborative effort, and we owe a lot of gratitude to many smart and talented individuals. Building it together with community ensures that we build a product that solves real problems for real people. We'd love to have your help too: Please feel free to open issues or provide pull requests.
|
|
112
|
+
Unleash is the largest [open source feature flag solution](https://www.getunleash.io/) on GitHub. Building Unleash is a collaborative effort, and we owe a lot of gratitude to many smart and talented individuals. Building it together with the community ensures that we build a product that solves real problems for real people. We'd love to have your help too: Please feel free to open issues or provide pull requests.
|
|
111
113
|
|
|
112
114
|
Check out [the CONTRIBUTING.md file](./CONTRIBUTING.md) for contribution guidelines and the [Unleash developer guide](./website/docs/contributing/developer-guide.md) for tips on environment setup, running the tests, and running Unleash from source.
|
|
113
115
|
|
|
@@ -13,7 +13,8 @@ exports.addonDefinitionSchema = joi_1.default.object().keys({
|
|
|
13
13
|
displayName: joi_1.default.string(),
|
|
14
14
|
documentationUrl: joi_1.default.string().uri({ scheme: [/https?/] }),
|
|
15
15
|
description: joi_1.default.string().allow(''),
|
|
16
|
-
|
|
16
|
+
howTo: joi_1.default.string().optional().allow(''),
|
|
17
|
+
deprecated: joi_1.default.string().optional().allow(''),
|
|
17
18
|
parameters: joi_1.default
|
|
18
19
|
.array()
|
|
19
20
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addon-schema.js","sourceRoot":"","sources":["../../../src/lib/addons/addon-schema.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,yCAA0C;AAC1C,iEAA4D;AAC5D,qFAAgF;AAEnE,QAAA,qBAAqB,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;IACnD,IAAI,EAAE,eAAQ;IACd,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1D,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,
|
|
1
|
+
{"version":3,"file":"addon-schema.js","sourceRoot":"","sources":["../../../src/lib/addons/addon-schema.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,yCAA0C;AAC1C,iEAA4D;AAC5D,qFAAgF;AAEnE,QAAA,qBAAqB,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;IACnD,IAAI,EAAE,eAAQ;IACd,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1D,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACxC,UAAU,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7C,UAAU,EAAE,aAAG;SACV,KAAK,EAAE;SACP,QAAQ,EAAE;SACV,KAAK,CACF,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE;QACzB,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,QAAQ,EAAE,aAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,SAAS,EAAE,aAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAC1C,CAAC,CACL;IACL,MAAM,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC;IAClD,QAAQ,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,+BAAa,CAAC;IACrD,YAAY,EAAE,6DAA4B,CAAC,QAAQ,EAAE;IACrD,MAAM,EAAE,aAAG;SACN,KAAK,EAAE;SACP,QAAQ,EAAE;SACV,KAAK,CACF,aAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QAC/D,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CACL;CACR,CAAC,CAAC"}
|
|
@@ -6,11 +6,12 @@ const dataDogDefinition = {
|
|
|
6
6
|
displayName: 'Datadog',
|
|
7
7
|
description: 'Allows Unleash to post updates to Datadog.',
|
|
8
8
|
documentationUrl: 'https://docs.getunleash.io/docs/addons/datadog',
|
|
9
|
+
howTo: 'The Datadog integration allows Unleash to post Updates to Datadog when a feature toggle is updated.',
|
|
9
10
|
parameters: [
|
|
10
11
|
{
|
|
11
12
|
name: 'url',
|
|
12
13
|
displayName: 'Datadog Events URL',
|
|
13
|
-
description:
|
|
14
|
+
description: "Default URL: https://api.datadoghq.com/api/v1/events. Needs to be changed if your're not using the US1 site.",
|
|
14
15
|
type: 'url',
|
|
15
16
|
required: false,
|
|
16
17
|
sensitive: false,
|
|
@@ -19,7 +20,7 @@ const dataDogDefinition = {
|
|
|
19
20
|
name: 'apiKey',
|
|
20
21
|
displayName: 'Datadog API key',
|
|
21
22
|
placeholder: 'j96c23b0f12a6b3434a8d710110bd862',
|
|
22
|
-
description: '(Required) API key
|
|
23
|
+
description: '(Required) API key to connect to Datadog',
|
|
23
24
|
type: 'text',
|
|
24
25
|
required: true,
|
|
25
26
|
sensitive: true,
|
|
@@ -36,14 +37,28 @@ const dataDogDefinition = {
|
|
|
36
37
|
name: 'customHeaders',
|
|
37
38
|
displayName: 'Extra HTTP Headers',
|
|
38
39
|
placeholder: `{
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
description:
|
|
40
|
+
"SOME_CUSTOM_HTTP_HEADER": "SOME_VALUE",
|
|
41
|
+
"SOME_OTHER_CUSTOM_HTTP_HEADER": "SOME_OTHER_VALUE"
|
|
42
|
+
}`,
|
|
43
|
+
description: '(Optional) Used to add extra HTTP Headers to the request the plugin fires off. This must be a valid json object of key-value pairs where both the key and the value are strings',
|
|
43
44
|
required: false,
|
|
44
45
|
sensitive: true,
|
|
45
46
|
type: 'textfield',
|
|
46
47
|
},
|
|
48
|
+
{
|
|
49
|
+
name: 'bodyTemplate',
|
|
50
|
+
displayName: 'Body template',
|
|
51
|
+
placeholder: `{
|
|
52
|
+
"event": "{{event.type}}",
|
|
53
|
+
"createdBy": "{{event.createdBy}}",
|
|
54
|
+
"featureToggle": "{{event.data.name}}",
|
|
55
|
+
"timestamp": "{{event.data.createdAt}}"
|
|
56
|
+
}`,
|
|
57
|
+
description: '(Optional) The default format is a markdown string formatted by Unleash. You may override the format of the body using a mustache template.',
|
|
58
|
+
required: false,
|
|
59
|
+
sensitive: false,
|
|
60
|
+
type: 'textfield',
|
|
61
|
+
},
|
|
47
62
|
],
|
|
48
63
|
events: [
|
|
49
64
|
events_1.FEATURE_CREATED,
|
|
@@ -59,7 +74,7 @@ const dataDogDefinition = {
|
|
|
59
74
|
events_1.FEATURE_STRATEGY_ADD,
|
|
60
75
|
events_1.FEATURE_METADATA_UPDATED,
|
|
61
76
|
events_1.FEATURE_PROJECT_CHANGE,
|
|
62
|
-
events_1.
|
|
77
|
+
events_1.FEATURE_ENVIRONMENT_VARIANTS_UPDATED,
|
|
63
78
|
events_1.FEATURE_POTENTIALLY_STALE_ON,
|
|
64
79
|
],
|
|
65
80
|
tagTypes: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadog-definition.js","sourceRoot":"","sources":["../../../src/lib/addons/datadog-definition.ts"],"names":[],"mappings":";;AAAA,4CAgByB;AAGzB,MAAM,iBAAiB,GAAqB;IACxC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,4CAA4C;IACzD,gBAAgB,EAAE,gDAAgD;IAClE,UAAU,EAAE;QACR;YACI,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,oBAAoB;YACjC,WAAW,EACP,
|
|
1
|
+
{"version":3,"file":"datadog-definition.js","sourceRoot":"","sources":["../../../src/lib/addons/datadog-definition.ts"],"names":[],"mappings":";;AAAA,4CAgByB;AAGzB,MAAM,iBAAiB,GAAqB;IACxC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,4CAA4C;IACzD,gBAAgB,EAAE,gDAAgD;IAClE,KAAK,EAAE,qGAAqG;IAC5G,UAAU,EAAE;QACR;YACI,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,oBAAoB;YACjC,WAAW,EACP,8GAA8G;YAClH,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;SACnB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,kCAAkC;YAC/C,WAAW,EAAE,0CAA0C;YACvD,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;SAClB;QACD;YACI,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,0BAA0B;YACvC,WAAW,EACP,yEAAyE;YAC7E,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;SACnB;QACD;YACI,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE;;;EAGvB;YACU,WAAW,EACP,iLAAiL;YACrL,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,WAAW;SACpB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE;;;;;EAKvB;YACU,WAAW,EACP,6IAA6I;YACjJ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,WAAW;SACpB;KACJ;IACD,MAAM,EAAE;QACJ,wBAAe;QACf,wBAAe;QACf,yBAAgB;QAChB,wBAAe;QACf,yBAAgB;QAChB,0BAAiB;QACjB,oCAA2B;QAC3B,qCAA4B;QAC5B,gCAAuB;QACvB,gCAAuB;QACvB,6BAAoB;QACpB,iCAAwB;QACxB,+BAAsB;QACtB,6CAAoC;QACpC,qCAA4B;KAC/B;IACD,QAAQ,EAAE;QACN;YACI,IAAI,EAAE,SAAS;YACf,WAAW,EACP,gFAAgF;YACpF,IAAI,EAAE,GAAG;SACZ;KACJ;CACJ,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Addon from './addon';
|
|
2
|
+
import { IFlagResolver } from '../types/experimental';
|
|
2
3
|
import { IAddonConfig } from '../types/model';
|
|
3
4
|
import { IEvent } from '../types/events';
|
|
4
5
|
interface IDatadogParameters {
|
|
@@ -6,10 +7,15 @@ interface IDatadogParameters {
|
|
|
6
7
|
apiKey: string;
|
|
7
8
|
sourceTypeName?: string;
|
|
8
9
|
customHeaders?: string;
|
|
10
|
+
bodyTemplate?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface IDatadogAddonConfig extends IAddonConfig {
|
|
13
|
+
flagResolver: IFlagResolver;
|
|
9
14
|
}
|
|
10
15
|
export default class DatadogAddon extends Addon {
|
|
11
16
|
private msgFormatter;
|
|
12
|
-
|
|
17
|
+
private flagResolver;
|
|
18
|
+
constructor(config: IDatadogAddonConfig);
|
|
13
19
|
handleEvent(event: IEvent, parameters: IDatadogParameters): Promise<void>;
|
|
14
20
|
}
|
|
15
21
|
export {};
|
|
@@ -5,19 +5,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const addon_1 = __importDefault(require("./addon"));
|
|
7
7
|
const datadog_definition_1 = __importDefault(require("./datadog-definition"));
|
|
8
|
+
const mustache_1 = __importDefault(require("mustache"));
|
|
8
9
|
const feature_event_formatter_md_1 = require("./feature-event-formatter-md");
|
|
9
10
|
class DatadogAddon extends addon_1.default {
|
|
10
11
|
constructor(config) {
|
|
11
12
|
super(datadog_definition_1.default, config);
|
|
12
13
|
this.msgFormatter = new feature_event_formatter_md_1.FeatureEventFormatterMd(config.unleashUrl, feature_event_formatter_md_1.LinkStyle.MD);
|
|
14
|
+
this.flagResolver = config.flagResolver;
|
|
13
15
|
}
|
|
14
16
|
async handleEvent(event, parameters) {
|
|
15
|
-
const { url = 'https://api.datadoghq.com/api/v1/events', apiKey, sourceTypeName, customHeaders, } = parameters;
|
|
16
|
-
const
|
|
17
|
+
const { url = 'https://api.datadoghq.com/api/v1/events', apiKey, sourceTypeName, customHeaders, bodyTemplate, } = parameters;
|
|
18
|
+
const context = {
|
|
19
|
+
event,
|
|
20
|
+
};
|
|
21
|
+
let text;
|
|
22
|
+
if (this.flagResolver.isEnabled('datadogJsonTemplate') &&
|
|
23
|
+
typeof bodyTemplate === 'string' &&
|
|
24
|
+
bodyTemplate.length > 1) {
|
|
25
|
+
text = mustache_1.default.render(bodyTemplate, context);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
text = `%%% \n ${this.msgFormatter.format(event)} \n %%% `;
|
|
29
|
+
}
|
|
17
30
|
const { tags: eventTags } = event;
|
|
18
31
|
const tags = eventTags && eventTags.map((tag) => `${tag.type}:${tag.value}`);
|
|
19
32
|
const body = {
|
|
20
|
-
text:
|
|
33
|
+
text: text,
|
|
21
34
|
title: 'Unleash notification update',
|
|
22
35
|
tags,
|
|
23
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadog.js","sourceRoot":"","sources":["../../../src/lib/addons/datadog.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,8EAA8C;
|
|
1
|
+
{"version":3,"file":"datadog.js","sourceRoot":"","sources":["../../../src/lib/addons/datadog.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,8EAA8C;AAC9C,wDAAgC;AAGhC,6EAIsC;AAsBtC,MAAqB,YAAa,SAAQ,eAAK;IAK3C,YAAY,MAA2B;QACnC,KAAK,CAAC,4BAAU,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,oDAAuB,CAC3C,MAAM,CAAC,UAAU,EACjB,sCAAS,CAAC,EAAE,CACf,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CACb,KAAa,EACb,UAA8B;QAE9B,MAAM,EACF,GAAG,GAAG,yCAAyC,EAC/C,MAAM,EACN,cAAc,EACd,aAAa,EACb,YAAY,GACf,GAAG,UAAU,CAAC;QAEf,MAAM,OAAO,GAAG;YACZ,KAAK;SACR,CAAC;QAEF,IAAI,IAAI,CAAC;QACT,IACI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,CAAC;YAClD,OAAO,YAAY,KAAK,QAAQ;YAChC,YAAY,CAAC,MAAM,GAAG,CAAC,EACzB;YACE,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SACjD;aAAM;YACH,IAAI,GAAG,UAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SAC9D;QAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClC,MAAM,IAAI,GACN,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAkB;YACxB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,6BAA6B;YACpC,IAAI;SACP,CAAC;QACF,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;SAC1C;QACD,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,IAAI;gBACA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;aAC5C;YAAC,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,6DAA6D,aAAa,GAAG,CAChF,CAAC;aACL;SACJ;QACD,MAAM,WAAW,GAAG;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,MAAM;gBACpB,GAAG,YAAY;aAClB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,iBAAiB,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,MAAM,EAAE,CAC5D,CAAC;IACN,CAAC;CACJ;AA5ED,+BA4EC"}
|
|
@@ -26,6 +26,11 @@ test('Should call datadog webhook', async () => {
|
|
|
26
26
|
const addon = new datadog_1.default({
|
|
27
27
|
getLogger: no_logger_1.default,
|
|
28
28
|
unleashUrl: 'http://some-url.com',
|
|
29
|
+
flagResolver: {
|
|
30
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
31
|
+
getVariant: jest.fn(),
|
|
32
|
+
isEnabled: jest.fn().mockReturnValue(false),
|
|
33
|
+
},
|
|
29
34
|
});
|
|
30
35
|
const event = {
|
|
31
36
|
id: 1,
|
|
@@ -52,6 +57,11 @@ test('Should call datadog webhook for archived toggle', async () => {
|
|
|
52
57
|
const addon = new datadog_1.default({
|
|
53
58
|
getLogger: no_logger_1.default,
|
|
54
59
|
unleashUrl: 'http://some-url.com',
|
|
60
|
+
flagResolver: {
|
|
61
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
62
|
+
getVariant: jest.fn(),
|
|
63
|
+
isEnabled: jest.fn().mockReturnValue(false),
|
|
64
|
+
},
|
|
55
65
|
});
|
|
56
66
|
const event = {
|
|
57
67
|
id: 2,
|
|
@@ -76,6 +86,11 @@ test('Should call datadog webhook for archived toggle with project info', async
|
|
|
76
86
|
const addon = new datadog_1.default({
|
|
77
87
|
getLogger: no_logger_1.default,
|
|
78
88
|
unleashUrl: 'http://some-url.com',
|
|
89
|
+
flagResolver: {
|
|
90
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
91
|
+
getVariant: jest.fn(),
|
|
92
|
+
isEnabled: jest.fn().mockReturnValue(false),
|
|
93
|
+
},
|
|
79
94
|
});
|
|
80
95
|
const event = {
|
|
81
96
|
id: 2,
|
|
@@ -101,6 +116,11 @@ test(`Should call datadog webhook for toggled environment`, async () => {
|
|
|
101
116
|
const addon = new datadog_1.default({
|
|
102
117
|
getLogger: no_logger_1.default,
|
|
103
118
|
unleashUrl: 'http://some-url.com',
|
|
119
|
+
flagResolver: {
|
|
120
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
121
|
+
getVariant: jest.fn(),
|
|
122
|
+
isEnabled: jest.fn().mockReturnValue(false),
|
|
123
|
+
},
|
|
104
124
|
});
|
|
105
125
|
const event = {
|
|
106
126
|
id: 2,
|
|
@@ -128,6 +148,11 @@ test(`Should include customHeaders in headers when calling service`, async () =>
|
|
|
128
148
|
const addon = new datadog_1.default({
|
|
129
149
|
getLogger: no_logger_1.default,
|
|
130
150
|
unleashUrl: 'http://some-url.com',
|
|
151
|
+
flagResolver: {
|
|
152
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
153
|
+
getVariant: jest.fn(),
|
|
154
|
+
isEnabled: jest.fn().mockReturnValue(false),
|
|
155
|
+
},
|
|
131
156
|
});
|
|
132
157
|
const event = {
|
|
133
158
|
id: 2,
|
|
@@ -157,6 +182,11 @@ test(`Should not include source_type_name when included in the config`, async ()
|
|
|
157
182
|
const addon = new datadog_1.default({
|
|
158
183
|
getLogger: no_logger_1.default,
|
|
159
184
|
unleashUrl: 'http://some-url.com',
|
|
185
|
+
flagResolver: {
|
|
186
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
187
|
+
getVariant: jest.fn(),
|
|
188
|
+
isEnabled: jest.fn().mockReturnValue(false),
|
|
189
|
+
},
|
|
160
190
|
});
|
|
161
191
|
const event = {
|
|
162
192
|
id: 2,
|
|
@@ -182,4 +212,36 @@ test(`Should not include source_type_name when included in the config`, async ()
|
|
|
182
212
|
expect(fetchRetryCalls[0].options.body).toMatchSnapshot();
|
|
183
213
|
expect(fetchRetryCalls[0].options.headers).toMatchSnapshot();
|
|
184
214
|
});
|
|
215
|
+
test('Should call datadog webhook with JSON when template set', async () => {
|
|
216
|
+
const addon = new datadog_1.default({
|
|
217
|
+
getLogger: no_logger_1.default,
|
|
218
|
+
unleashUrl: 'http://some-url.com',
|
|
219
|
+
flagResolver: {
|
|
220
|
+
getAll: jest.fn().mockReturnValue([]),
|
|
221
|
+
getVariant: jest.fn(),
|
|
222
|
+
isEnabled: jest.fn().mockReturnValue(true),
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
const event = {
|
|
226
|
+
id: 1,
|
|
227
|
+
createdAt: new Date(),
|
|
228
|
+
type: events_1.FEATURE_CREATED,
|
|
229
|
+
createdBy: 'some@user.com',
|
|
230
|
+
featureName: 'some-toggle',
|
|
231
|
+
data: {
|
|
232
|
+
name: 'some-toggle',
|
|
233
|
+
enabled: false,
|
|
234
|
+
strategies: [{ name: 'default' }],
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
const parameters = {
|
|
238
|
+
url: 'http://api.datadoghq.com/api/v1/events',
|
|
239
|
+
apiKey: 'fakeKey',
|
|
240
|
+
bodyTemplate: '{\n "event": "{{event.type}}",\n "createdBy": "{{event.createdBy}}"\n}',
|
|
241
|
+
};
|
|
242
|
+
await addon.handleEvent(event, parameters);
|
|
243
|
+
expect(fetchRetryCalls.length).toBe(1);
|
|
244
|
+
expect(fetchRetryCalls[0].url).toBe(parameters.url);
|
|
245
|
+
expect(fetchRetryCalls[0].options.body).toMatchSnapshot();
|
|
246
|
+
});
|
|
185
247
|
//# sourceMappingURL=datadog.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadog.test.js","sourceRoot":"","sources":["../../../src/lib/addons/datadog.test.ts"],"names":[],"mappings":";;;;;AAAA,4CAKyB;AAGzB,wDAAqC;AAErC,8EAAqD;AAErD,IAAI,eAAe,GAAU,EAAE,CAAC;AAEhC,IAAI,CAAC,IAAI,CACL,SAAS,EACT,GAAG,EAAE,CACD,MAAM,KAAK;IAGP,YAAY,UAAU,EAAE,EAAE,SAAS,EAAE;QACjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,eAAe,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;QAC3C,eAAe,CAAC,IAAI,CAAC;YACjB,GAAG;YACH,OAAO;YACP,OAAO;YACP,OAAO;SACV,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ,CACR,CAAC;AAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;IAC3C,MAAM,KAAK,GAAG,IAAI,iBAAY,CAAC;QAC3B,SAAS,EAAE,mBAAQ;QACnB,UAAU,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"datadog.test.js","sourceRoot":"","sources":["../../../src/lib/addons/datadog.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/addons/index.js
CHANGED
|
@@ -10,21 +10,13 @@ const teams_1 = __importDefault(require("./teams"));
|
|
|
10
10
|
const datadog_1 = __importDefault(require("./datadog"));
|
|
11
11
|
const slack_app_1 = __importDefault(require("./slack-app"));
|
|
12
12
|
const getAddons = ({ getLogger, unleashUrl, flagResolver }) => {
|
|
13
|
-
const slackAppAddonEnabled = flagResolver.isEnabled('slackAppAddon');
|
|
14
|
-
const slackAddon = new slack_1.default({ getLogger, unleashUrl });
|
|
15
|
-
if (slackAppAddonEnabled) {
|
|
16
|
-
slackAddon.definition.deprecated =
|
|
17
|
-
'This addon is deprecated. Please try the new Slack App addon instead.';
|
|
18
|
-
}
|
|
19
13
|
const addons = [
|
|
20
14
|
new webhook_1.default({ getLogger }),
|
|
21
|
-
|
|
15
|
+
new slack_1.default({ getLogger, unleashUrl }),
|
|
16
|
+
new slack_app_1.default({ getLogger, unleashUrl }),
|
|
22
17
|
new teams_1.default({ getLogger, unleashUrl }),
|
|
23
|
-
new datadog_1.default({ getLogger, unleashUrl }),
|
|
18
|
+
new datadog_1.default({ getLogger, unleashUrl, flagResolver }),
|
|
24
19
|
];
|
|
25
|
-
if (slackAppAddonEnabled) {
|
|
26
|
-
addons.push(new slack_app_1.default({ getLogger, unleashUrl }));
|
|
27
|
-
}
|
|
28
20
|
return addons.reduce((map, addon) => {
|
|
29
21
|
// eslint-disable-next-line no-param-reassign
|
|
30
22
|
map[addon.name] = addon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/addons/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,oDAAiC;AACjC,oDAAiC;AACjC,wDAAqC;AAGrC,4DAAwC;AAOjC,MAAM,SAAS,GAIE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;IAChE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/addons/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,oDAAiC;AACjC,oDAAiC;AACjC,wDAAqC;AAGrC,4DAAwC;AAOjC,MAAM,SAAS,GAIE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;IAChE,MAAM,MAAM,GAAY;QACpB,IAAI,iBAAO,CAAC,EAAE,SAAS,EAAE,CAAC;QAC1B,IAAI,eAAU,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QACzC,IAAI,mBAAa,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAC5C,IAAI,eAAU,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QACzC,IAAI,iBAAY,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;KAC5D,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAChC,6CAA6C;QAC7C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACxB,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC,CAAC;AAlBW,QAAA,SAAS,aAkBpB"}
|
|
@@ -4,22 +4,13 @@ const events_1 = require("../types/events");
|
|
|
4
4
|
const slackAppDefinition = {
|
|
5
5
|
name: 'slack-app',
|
|
6
6
|
displayName: 'Slack App',
|
|
7
|
-
description: 'The Unleash Slack App posts messages to
|
|
7
|
+
description: 'The Unleash Slack App posts messages to the selected channels in your Slack workspace.',
|
|
8
|
+
howTo: 'Below you can specify which Slack channels receive event notifications. The configuration settings allow you to choose the events and whether you want to filter them by projects and environments.\n\nYou can also select which channels to post to by configuring your feature toggles with “slack” tags. For example, if you’d like the bot to post messages to the #general channel, you can configure your feature toggle with the “slack:general” tag.\n\nThe Unleash Slack App bot has access to public channels by default. If you want the bot to post messages to private channels, you’ll need to invite it to those channels.',
|
|
8
9
|
documentationUrl: 'https://docs.getunleash.io/docs/addons/slack-app',
|
|
9
|
-
alerts: [
|
|
10
|
-
{
|
|
11
|
-
type: 'info',
|
|
12
|
-
text: `The Unleash Slack App bot has access to public channels by default. If you want the bot to post messages to private channels, you'll need to invite it to those channels.`,
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
type: 'warning',
|
|
16
|
-
text: `Please ensure you have the Unleash Slack App installed in your Slack workspace if you haven't installed it already.`,
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
10
|
installation: {
|
|
20
11
|
url: 'https://unleash-slack-app.vercel.app/install',
|
|
21
12
|
title: 'Slack App installation',
|
|
22
|
-
helpText: 'After installing the Unleash Slack app in your Slack workspace, paste the access token into the appropriate field below in order to configure this
|
|
13
|
+
helpText: 'After installing the Unleash Slack app in your Slack workspace, paste the access token into the appropriate field below in order to configure this integration.',
|
|
23
14
|
},
|
|
24
15
|
parameters: [
|
|
25
16
|
{
|
|
@@ -32,16 +23,8 @@ const slackAppDefinition = {
|
|
|
32
23
|
},
|
|
33
24
|
{
|
|
34
25
|
name: 'defaultChannels',
|
|
35
|
-
displayName: '
|
|
36
|
-
description: 'A comma-separated list of channels to post
|
|
37
|
-
type: 'text',
|
|
38
|
-
required: false,
|
|
39
|
-
sensitive: false,
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'alwaysPostToDefault',
|
|
43
|
-
displayName: 'Always post to default channels',
|
|
44
|
-
description: `If set to 'true' or 'yes', the app will always post events to the default channels, even if the feature toggle has slack tags`,
|
|
26
|
+
displayName: 'Channels',
|
|
27
|
+
description: 'A comma-separated list of channels to post the configured events to. These channels are always notified, regardless of the event type or the presence of a slack tag.',
|
|
45
28
|
type: 'text',
|
|
46
29
|
required: false,
|
|
47
30
|
sensitive: false,
|
|
@@ -49,7 +32,6 @@ const slackAppDefinition = {
|
|
|
49
32
|
],
|
|
50
33
|
events: [
|
|
51
34
|
events_1.FEATURE_CREATED,
|
|
52
|
-
events_1.FEATURE_UPDATED,
|
|
53
35
|
events_1.FEATURE_ARCHIVED,
|
|
54
36
|
events_1.FEATURE_REVIVED,
|
|
55
37
|
events_1.FEATURE_STALE_ON,
|
|
@@ -61,7 +43,6 @@ const slackAppDefinition = {
|
|
|
61
43
|
events_1.FEATURE_STRATEGY_UPDATE,
|
|
62
44
|
events_1.FEATURE_STRATEGY_ADD,
|
|
63
45
|
events_1.FEATURE_METADATA_UPDATED,
|
|
64
|
-
events_1.FEATURE_VARIANTS_UPDATED,
|
|
65
46
|
events_1.FEATURE_PROJECT_CHANGE,
|
|
66
47
|
events_1.FEATURE_POTENTIALLY_STALE_ON,
|
|
67
48
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-app-definition.js","sourceRoot":"","sources":["../../../src/lib/addons/slack-app-definition.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"slack-app-definition.js","sourceRoot":"","sources":["../../../src/lib/addons/slack-app-definition.ts"],"names":[],"mappings":";;AAAA,4CAeyB;AAGzB,MAAM,kBAAkB,GAAqB;IACzC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,WAAW;IACxB,WAAW,EACP,wFAAwF;IAC5F,KAAK,EAAE,2mBAA2mB;IAClnB,gBAAgB,EAAE,kDAAkD;IACpE,YAAY,EAAE;QACV,GAAG,EAAE,8CAA8C;QACnD,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EACJ,iKAAiK;KACxK;IACD,UAAU,EAAE;QACR;YACI,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;SAClB;QACD;YACI,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,UAAU;YACvB,WAAW,EACP,uKAAuK;YAC3K,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;SACnB;KACJ;IACD,MAAM,EAAE;QACJ,wBAAe;QACf,yBAAgB;QAChB,wBAAe;QACf,yBAAgB;QAChB,0BAAiB;QACjB,oCAA2B;QAC3B,qCAA4B;QAC5B,6CAAoC;QACpC,gCAAuB;QACvB,gCAAuB;QACvB,6BAAoB;QACpB,iCAAwB;QACxB,+BAAsB;QACtB,qCAA4B;KAC/B;IACD,QAAQ,EAAE;QACN;YACI,IAAI,EAAE,OAAO;YACb,WAAW,EACP,iEAAiE;YACrE,IAAI,EAAE,GAAG;SACZ;KACJ;CACJ,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const web_api_1 = require("@slack/web-api");
|
|
7
7
|
const addon_1 = __importDefault(require("./addon"));
|
|
8
8
|
const slack_app_definition_1 = __importDefault(require("./slack-app-definition"));
|
|
9
|
-
const SCHEDULE_MESSAGE_DELAY_IN_SECONDS = 10;
|
|
10
9
|
const feature_event_formatter_md_1 = require("./feature-event-formatter-md");
|
|
11
10
|
class SlackAppAddon extends addon_1.default {
|
|
12
11
|
constructor(args) {
|
|
@@ -15,23 +14,15 @@ class SlackAppAddon extends addon_1.default {
|
|
|
15
14
|
}
|
|
16
15
|
async handleEvent(event, parameters) {
|
|
17
16
|
try {
|
|
18
|
-
const { accessToken, defaultChannels
|
|
17
|
+
const { accessToken, defaultChannels } = parameters;
|
|
19
18
|
if (!accessToken) {
|
|
20
19
|
this.logger.warn('No access token provided.');
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
23
|
-
let postToDefault = alwaysPostToDefault === 'true' || alwaysPostToDefault === 'yes';
|
|
24
|
-
this.logger.debug(`Post to default was set to ${postToDefault}`);
|
|
25
22
|
const taggedChannels = this.findTaggedChannels(event);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
eventChannels = taggedChannels.length
|
|
32
|
-
? taggedChannels
|
|
33
|
-
: this.getDefaultChannels(defaultChannels);
|
|
34
|
-
}
|
|
23
|
+
const eventChannels = [
|
|
24
|
+
...new Set(taggedChannels.concat(this.getDefaultChannels(defaultChannels))),
|
|
25
|
+
];
|
|
35
26
|
if (!eventChannels.length) {
|
|
36
27
|
this.logger.debug(`No Slack channels found for event ${event.type}.`);
|
|
37
28
|
return;
|
|
@@ -48,9 +39,7 @@ class SlackAppAddon extends addon_1.default {
|
|
|
48
39
|
const text = this.msgFormatter.format(event);
|
|
49
40
|
const url = this.msgFormatter.featureLink(event);
|
|
50
41
|
const requests = eventChannels.map((name) => {
|
|
51
|
-
|
|
52
|
-
const postAt = now + SCHEDULE_MESSAGE_DELAY_IN_SECONDS;
|
|
53
|
-
return this.slackClient.chat.scheduleMessage({
|
|
42
|
+
return this.slackClient.chat.postMessage({
|
|
54
43
|
channel: name,
|
|
55
44
|
text,
|
|
56
45
|
blocks: [
|
|
@@ -77,7 +66,6 @@ class SlackAppAddon extends addon_1.default {
|
|
|
77
66
|
],
|
|
78
67
|
},
|
|
79
68
|
],
|
|
80
|
-
post_at: postAt,
|
|
81
69
|
});
|
|
82
70
|
});
|
|
83
71
|
const results = await Promise.allSettled(requests);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-app.js","sourceRoot":"","sources":["../../../src/lib/addons/slack-app.ts"],"names":[],"mappings":";;;;;AAAA,4CASwB;AACxB,oDAA4B;AAE5B,kFAAwD;AAExD,
|
|
1
|
+
{"version":3,"file":"slack-app.js","sourceRoot":"","sources":["../../../src/lib/addons/slack-app.ts"],"names":[],"mappings":";;;;;AAAA,4CASwB;AACxB,oDAA4B;AAE5B,kFAAwD;AAExD,6EAIsC;AAQtC,MAAqB,aAAc,SAAQ,eAAK;IAO5C,YAAY,IAAkB;QAC1B,KAAK,CAAC,8BAAkB,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,oDAAuB,CAC3C,IAAI,CAAC,UAAU,EACf,sCAAS,CAAC,KAAK,CAClB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CACb,KAAa,EACb,UAAoC;QAEpC,IAAI;YACA,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC9C,OAAO;aACV;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG;gBAClB,GAAG,IAAI,GAAG,CACN,cAAc,CAAC,MAAM,CACjB,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAC3C,CACJ;aACJ,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,qCAAqC,KAAK,CAAC,IAAI,GAAG,CACrD,CAAC;gBACF,OAAO;aACV;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,aAAa,GAAG,CAAC,CAAC;YAEjE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;gBACvD,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,CAAC;gBAC1C,MAAM,CAAC,EAAE,CAAC,wBAAc,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE;oBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,gCAAgC,KAAK,CAAC,IAAI,2BAA2B,UAAU,UAAU,CAC5F,CAAC;gBACN,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;aAClC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxC,OAAO,IAAI,CAAC,WAAY,CAAC,IAAI,CAAC,WAAW,CAAC;oBACtC,OAAO,EAAE,IAAI;oBACb,IAAI;oBACJ,MAAM,EAAE;wBACJ;4BACI,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,IAAI;6BACP;yBACJ;wBACD;4BACI,IAAI,EAAE,SAAS;4BACf,QAAQ,EAAE;gCACN;oCACI,IAAI,EAAE,QAAQ;oCACd,GAAG;oCACH,IAAI,EAAE;wCACF,IAAI,EAAE,YAAY;wCAClB,IAAI,EAAE,iBAAiB;qCAC1B;oCACD,KAAK,EAAE,eAAe;oCACtB,KAAK,EAAE,SAAS;iCACnB;6BACJ;yBACJ;qBACJ;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEnD,OAAO;iBACF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC;iBAC7C,GAAG,CAAC,CAAC,EAAE,MAAM,EAAyB,EAAE,EAAE,CACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAC/B,CAAC;YAEN,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,iBAAiB,KAAK,CAAC,IAAI,gBACvB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC;iBACjD,MACT,WAAW,QAAQ,CAAC,MAAM,yBAAyB,CACtD,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC/B;IACL,CAAC;IAED,kBAAkB,CAAC,EAAE,IAAI,EAAwB;QAC7C,IAAI,IAAI,EAAE;YACN,OAAO,IAAI;iBACN,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC5B;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,eAAwB;QACvC,IAAI,eAAe,EAAE;YACjB,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1D;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,KAAyB;QAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO;SACV;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAS,CAAC,aAAa,EAAE;YACxC,MAAM,EAAE,IAAI,EAAE,GAAG,KAA4B,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,wBAAwB,KAAK,CAAC,IAAI,gCAAgC,IAAI,EAAE,EACxE,KAAK,CACR,CAAC;SACL;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAS,CAAC,YAAY,EAAE;YAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,KAA2B,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,wBAAwB,KAAK,CAAC,IAAI,+BAA+B,QAAQ,EAAE,EAC3E,KAAK,CACR,CAAC;SACL;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAS,CAAC,gBAAgB,EAAE;YAClD,MAAM,EAAE,UAAU,EAAE,GAAG,KAA+B,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,wBAAwB,KAAK,CAAC,IAAI,8CAA8C,UAAU,UAAU,EACpG,KAAK,CACR,CAAC;SACL;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAS,CAAC,SAAS,EAAE;YAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,KAAwB,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,wBAAwB,KAAK,CAAC,IAAI,yCAAyC,UAAU,EAAE,EACvF,KAAK,CACR,CAAC;SACL;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;SAClE;IACL,CAAC;CACJ;AA5JD,gCA4JC;AAED,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC"}
|