unleash-server 4.2.2 → 4.3.0-beta.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 +1 -0
- package/dist/lib/addons/addon.d.ts +2 -1
- package/dist/lib/addons/addon.js.map +1 -1
- package/dist/lib/addons/datadog.d.ts +2 -1
- package/dist/lib/addons/datadog.js.map +1 -1
- package/dist/lib/addons/datadog.test.js +3 -0
- package/dist/lib/addons/datadog.test.js.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.d.ts +1 -1
- package/dist/lib/addons/feature-event-formatter-md.js +13 -14
- package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
- package/dist/lib/addons/slack.d.ts +2 -1
- package/dist/lib/addons/slack.js.map +1 -1
- package/dist/lib/addons/slack.test.js +6 -0
- package/dist/lib/addons/slack.test.js.map +1 -1
- package/dist/lib/addons/teams.d.ts +2 -1
- package/dist/lib/addons/teams.js.map +1 -1
- package/dist/lib/addons/teams.test.js +3 -0
- package/dist/lib/addons/teams.test.js.map +1 -1
- package/dist/lib/addons/webhook.d.ts +8 -2
- package/dist/lib/addons/webhook.js +0 -1
- package/dist/lib/addons/webhook.js.map +1 -1
- package/dist/lib/addons/webhook.test.js +2 -0
- package/dist/lib/addons/webhook.test.js.map +1 -1
- package/dist/lib/create-config.js +5 -15
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/create-config.test.js +0 -37
- package/dist/lib/create-config.test.js.map +1 -1
- package/dist/lib/db/client-metrics-store-v2.js +5 -1
- package/dist/lib/db/client-metrics-store-v2.js.map +1 -1
- package/dist/lib/db/event-store.d.ts +10 -6
- package/dist/lib/db/event-store.js +21 -1
- package/dist/lib/db/event-store.js.map +1 -1
- package/dist/lib/db/feature-strategy-store.js +1 -0
- package/dist/lib/db/feature-strategy-store.js.map +1 -1
- package/dist/lib/db/feature-toggle-store.d.ts +4 -1
- package/dist/lib/db/feature-toggle-store.js +27 -2
- package/dist/lib/db/feature-toggle-store.js.map +1 -1
- package/dist/lib/db/index.js +2 -0
- package/dist/lib/db/index.js.map +1 -1
- package/dist/lib/db/user-splash-store.d.ts +19 -0
- package/dist/lib/db/user-splash-store.js +70 -0
- package/dist/lib/db/user-splash-store.js.map +1 -0
- package/dist/lib/error/operation-denied-error.d.ts +4 -0
- package/dist/lib/error/operation-denied-error.js +24 -0
- package/dist/lib/error/operation-denied-error.js.map +1 -0
- package/dist/lib/metrics.js +17 -8
- package/dist/lib/metrics.js.map +1 -1
- package/dist/lib/metrics.test.js +1 -0
- package/dist/lib/metrics.test.js.map +1 -1
- package/dist/lib/routes/admin-api/event.d.ts +8 -4
- package/dist/lib/routes/admin-api/event.js +8 -10
- package/dist/lib/routes/admin-api/event.js.map +1 -1
- package/dist/lib/routes/admin-api/feature.js +1 -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/project/index.js +2 -0
- package/dist/lib/routes/admin-api/project/index.js.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.d.ts +21 -0
- package/dist/lib/routes/admin-api/project/variants.js +41 -0
- package/dist/lib/routes/admin-api/project/variants.js.map +1 -0
- package/dist/lib/routes/admin-api/state.js +0 -1
- package/dist/lib/routes/admin-api/state.js.map +1 -1
- package/dist/lib/routes/admin-api/user-splash-controller.d.ts +10 -0
- package/dist/lib/routes/admin-api/user-splash-controller.js +28 -0
- package/dist/lib/routes/admin-api/user-splash-controller.js.map +1 -0
- package/dist/lib/routes/admin-api/user.d.ts +2 -1
- package/dist/lib/routes/admin-api/user.js +7 -2
- package/dist/lib/routes/admin-api/user.js.map +1 -1
- package/dist/lib/routes/client-api/metrics.d.ts +0 -1
- package/dist/lib/routes/client-api/metrics.js +2 -10
- package/dist/lib/routes/client-api/metrics.js.map +1 -1
- package/dist/lib/routes/util.js +18 -16
- package/dist/lib/routes/util.js.map +1 -1
- package/dist/lib/schema/feature-schema.d.ts +1 -0
- package/dist/lib/schema/feature-schema.js +6 -7
- package/dist/lib/schema/feature-schema.js.map +1 -1
- package/dist/lib/services/addon-service-test-simple-addon.d.ts +1 -1
- package/dist/lib/services/addon-service-test-simple-addon.js.map +1 -1
- package/dist/lib/services/client-metrics/client-metrics-service-v2.js +3 -3
- package/dist/lib/services/client-metrics/client-metrics-service-v2.js.map +1 -1
- package/dist/lib/services/client-metrics/index.d.ts +6 -5
- package/dist/lib/services/client-metrics/index.js +6 -3
- package/dist/lib/services/client-metrics/index.js.map +1 -1
- package/dist/lib/services/client-metrics/list.d.ts +19 -16
- package/dist/lib/services/client-metrics/list.js +6 -4
- package/dist/lib/services/client-metrics/list.js.map +1 -1
- package/dist/lib/services/client-metrics/list.test.js +9 -5
- package/dist/lib/services/client-metrics/list.test.js.map +1 -1
- package/dist/lib/services/client-metrics/ttl-list.d.ts +20 -14
- package/dist/lib/services/client-metrics/ttl-list.js +17 -12
- package/dist/lib/services/client-metrics/ttl-list.js.map +1 -1
- package/dist/lib/services/client-metrics/ttl-list.test.js +14 -10
- package/dist/lib/services/client-metrics/ttl-list.test.js.map +1 -1
- package/dist/lib/services/event-service.d.ts +1 -1
- package/dist/lib/services/event-service.js +1 -1
- package/dist/lib/services/event-service.js.map +1 -1
- package/dist/lib/services/feature-tag-service.js +7 -11
- package/dist/lib/services/feature-tag-service.js.map +1 -1
- package/dist/lib/services/feature-toggle-service.d.ts +25 -15
- package/dist/lib/services/feature-toggle-service.js +198 -136
- package/dist/lib/services/feature-toggle-service.js.map +1 -1
- package/dist/lib/services/index.js +3 -0
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/project-health-service.d.ts +2 -2
- package/dist/lib/services/project-health-service.js +1 -0
- package/dist/lib/services/project-health-service.js.map +1 -1
- package/dist/lib/services/project-service.d.ts +2 -3
- package/dist/lib/services/project-service.js +12 -18
- package/dist/lib/services/project-service.js.map +1 -1
- package/dist/lib/services/user-service.d.ts +3 -2
- package/dist/lib/services/user-service.js +37 -21
- package/dist/lib/services/user-service.js.map +1 -1
- package/dist/lib/services/user-splash-service.d.ts +12 -0
- package/dist/lib/services/user-splash-service.js +33 -0
- package/dist/lib/services/user-splash-service.js.map +1 -0
- package/dist/lib/types/events.d.ts +165 -2
- package/dist/lib/types/events.js +124 -4
- package/dist/lib/types/events.js.map +1 -1
- package/dist/lib/types/model.d.ts +4 -12
- package/dist/lib/types/model.js +6 -1
- package/dist/lib/types/model.js.map +1 -1
- package/dist/lib/types/services.d.ts +2 -0
- package/dist/lib/types/stores/event-store.d.ts +4 -3
- package/dist/lib/types/stores/feature-toggle-store.d.ts +3 -1
- package/dist/lib/types/stores/user-splash-store.d.ts +15 -0
- package/dist/lib/types/stores/user-splash-store.js +3 -0
- package/dist/lib/types/stores/user-splash-store.js.map +1 -0
- package/dist/lib/types/stores.d.ts +2 -0
- package/dist/migrations/20211105104316-add-feature-name-column-to-events.d.ts +2 -0
- package/dist/migrations/20211105104316-add-feature-name-column-to-events.js +16 -0
- package/dist/migrations/20211105104316-add-feature-name-column-to-events.js.map +1 -0
- package/dist/migrations/20211105105509-add-predata-column-to-events.d.ts +2 -0
- package/dist/migrations/20211105105509-add-predata-column-to-events.js +8 -0
- package/dist/migrations/20211105105509-add-predata-column-to-events.js.map +1 -0
- package/dist/migrations/20211108130333-create-user-splash-table.d.ts +2 -0
- package/dist/migrations/20211108130333-create-user-splash-table.js +18 -0
- package/dist/migrations/20211108130333-create-user-splash-table.js.map +1 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.d.ts +2 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.js +7 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.js.map +1 -0
- package/dist/migrations/20211126112551-disable-default-environment.d.ts +2 -0
- package/dist/migrations/20211126112551-disable-default-environment.js +24 -0
- package/dist/migrations/20211126112551-disable-default-environment.js.map +1 -0
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +18 -14
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/feature.e2e.test.js +24 -18
- package/dist/test/e2e/api/admin/feature.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/features.e2e.test.js +31 -8
- package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/project.health.e2e.test.js +60 -0
- package/dist/test/e2e/api/admin/project/project.health.e2e.test.js.map +1 -1
- package/dist/{lib/event-differ.test.d.ts → test/e2e/api/admin/project/variants.e2e.test.d.ts} +0 -0
- package/dist/test/e2e/api/admin/project/variants.e2e.test.js +727 -0
- package/dist/test/e2e/api/admin/project/variants.e2e.test.js.map +1 -0
- package/dist/test/e2e/api/admin/splash.e2e.test.d.ts +1 -0
- package/dist/test/e2e/api/admin/splash.e2e.test.js +51 -0
- package/dist/test/e2e/api/admin/splash.e2e.test.js.map +1 -0
- package/dist/test/e2e/api/admin/user-admin.e2e.test.js +2 -16
- package/dist/test/e2e/api/admin/user-admin.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/project-service.e2e.test.js +0 -30
- package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/user-splash-store.e2e.test.d.ts +1 -0
- package/dist/test/e2e/stores/user-splash-store.e2e.test.js +74 -0
- package/dist/test/e2e/stores/user-splash-store.e2e.test.js.map +1 -0
- package/dist/test/fixtures/fake-event-store.d.ts +2 -1
- package/dist/test/fixtures/fake-event-store.js +3 -0
- package/dist/test/fixtures/fake-event-store.js.map +1 -1
- package/dist/test/fixtures/fake-feature-toggle-store.d.ts +3 -1
- package/dist/test/fixtures/fake-feature-toggle-store.js +9 -0
- package/dist/test/fixtures/fake-feature-toggle-store.js.map +1 -1
- package/dist/test/fixtures/fake-user-splash-store.d.ts +12 -0
- package/dist/test/fixtures/fake-user-splash-store.js +40 -0
- package/dist/test/fixtures/fake-user-splash-store.js.map +1 -0
- package/dist/test/fixtures/store.js +2 -0
- package/dist/test/fixtures/store.js.map +1 -1
- package/docs/api/oas/openapi.yaml +35 -55
- package/package.json +16 -17
- package/dist/lib/event-differ.d.ts +0 -1
- package/dist/lib/event-differ.js +0 -117
- package/dist/lib/event-differ.js.map +0 -1
- package/dist/lib/event-differ.test.js +0 -142
- package/dist/lib/event-differ.test.js.map +0 -1
package/dist/lib/types/events.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
3
|
+
exports.USER_CREATED = exports.DB_POOL_UPDATE = exports.ADDON_CONFIG_DELETED = exports.ADDON_CONFIG_UPDATED = exports.ADDON_CONFIG_CREATED = exports.DROP_TAG_TYPES = exports.TAG_TYPE_IMPORT = exports.TAG_TYPE_UPDATED = exports.TAG_TYPE_DELETED = exports.TAG_TYPE_CREATED = exports.DROP_TAGS = exports.TAG_IMPORT = exports.TAG_DELETED = exports.TAG_CREATED = exports.DROP_PROJECTS = exports.PROJECT_IMPORT = exports.PROJECT_DELETED = exports.PROJECT_UPDATED = exports.PROJECT_CREATED = exports.CONTEXT_FIELD_DELETED = exports.CONTEXT_FIELD_UPDATED = exports.CONTEXT_FIELD_CREATED = exports.DROP_STRATEGIES = exports.STRATEGY_IMPORT = exports.STRATEGY_UPDATED = exports.STRATEGY_REACTIVATED = exports.STRATEGY_DEPRECATED = exports.STRATEGY_DELETED = exports.STRATEGY_CREATED = exports.FEATURE_ENVIRONMENT_DISABLED = exports.FEATURE_ENVIRONMENT_ENABLED = exports.DROP_FEATURES = exports.FEATURE_STALE_OFF = exports.FEATURE_STALE_ON = exports.FEATURE_UNTAGGED = exports.DROP_FEATURE_TAGS = exports.FEATURE_STRATEGY_REMOVE = exports.FEATURE_STRATEGY_ADD = exports.FEATURE_STRATEGY_UPDATE = exports.FEATURE_TAG_IMPORT = exports.FEATURE_TAGGED = exports.FEATURE_IMPORT = exports.FEATURE_REVIVED = exports.FEATURE_ARCHIVED = exports.FEATURE_PROJECT_CHANGE = exports.FEATURE_METADATA_UPDATED = exports.FEATURE_UPDATED = exports.FEATURE_DELETED = exports.FEATURE_CREATED = exports.APPLICATION_CREATED = void 0;
|
|
4
|
+
exports.FeatureStrategyRemoveEvent = exports.FeatureStrategyUpdateEvent = exports.FeatureStrategyAddEvent = exports.FeatureMetadataUpdateEvent = exports.FeatureDeletedEvent = exports.FeatureRevivedEvent = exports.FeatureArchivedEvent = exports.FeatureCreatedEvent = exports.FeatureChangeProjectEvent = exports.FeatureEnvironmentEvent = exports.FeatureStaleEvent = exports.ENVIRONMENT_IMPORT = exports.DROP_ENVIRONMENTS = exports.USER_DELETED = exports.USER_UPDATED = void 0;
|
|
5
5
|
exports.APPLICATION_CREATED = 'application-created';
|
|
6
|
+
// feature event types
|
|
6
7
|
exports.FEATURE_CREATED = 'feature-created';
|
|
7
8
|
exports.FEATURE_DELETED = 'feature-deleted';
|
|
8
9
|
exports.FEATURE_UPDATED = 'feature-updated';
|
|
@@ -21,6 +22,8 @@ exports.FEATURE_UNTAGGED = 'feature-untagged';
|
|
|
21
22
|
exports.FEATURE_STALE_ON = 'feature-stale-on';
|
|
22
23
|
exports.FEATURE_STALE_OFF = 'feature-stale-off';
|
|
23
24
|
exports.DROP_FEATURES = 'drop-features';
|
|
25
|
+
exports.FEATURE_ENVIRONMENT_ENABLED = 'feature-environment-enabled';
|
|
26
|
+
exports.FEATURE_ENVIRONMENT_DISABLED = 'feature-environment-disabled';
|
|
24
27
|
exports.STRATEGY_CREATED = 'strategy-created';
|
|
25
28
|
exports.STRATEGY_DELETED = 'strategy-deleted';
|
|
26
29
|
exports.STRATEGY_DEPRECATED = 'strategy-deprecated';
|
|
@@ -54,6 +57,123 @@ exports.USER_UPDATED = 'user-updated';
|
|
|
54
57
|
exports.USER_DELETED = 'user-deleted';
|
|
55
58
|
exports.DROP_ENVIRONMENTS = 'drop-environments';
|
|
56
59
|
exports.ENVIRONMENT_IMPORT = 'environment-import';
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
class BaseEvent {
|
|
61
|
+
constructor(type, createdBy, tags = []) {
|
|
62
|
+
this.type = type;
|
|
63
|
+
this.createdBy = createdBy;
|
|
64
|
+
this.tags = tags;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
class FeatureStaleEvent extends BaseEvent {
|
|
68
|
+
constructor(p) {
|
|
69
|
+
super(p.stale ? exports.FEATURE_STALE_ON : exports.FEATURE_STALE_OFF, p.createdBy, p.tags);
|
|
70
|
+
this.project = p.project;
|
|
71
|
+
this.featureName = p.featureName;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.FeatureStaleEvent = FeatureStaleEvent;
|
|
75
|
+
class FeatureEnvironmentEvent extends BaseEvent {
|
|
76
|
+
constructor(p) {
|
|
77
|
+
super(p.enabled
|
|
78
|
+
? exports.FEATURE_ENVIRONMENT_ENABLED
|
|
79
|
+
: exports.FEATURE_ENVIRONMENT_DISABLED, p.createdBy, p.tags);
|
|
80
|
+
this.project = p.project;
|
|
81
|
+
this.featureName = p.featureName;
|
|
82
|
+
this.environment = p.environment;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.FeatureEnvironmentEvent = FeatureEnvironmentEvent;
|
|
86
|
+
class FeatureChangeProjectEvent extends BaseEvent {
|
|
87
|
+
constructor(p) {
|
|
88
|
+
super(exports.FEATURE_PROJECT_CHANGE, p.createdBy, p.tags);
|
|
89
|
+
const { newProject, oldProject, featureName } = p;
|
|
90
|
+
this.project = newProject;
|
|
91
|
+
this.featureName = featureName;
|
|
92
|
+
this.data = { newProject, oldProject };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.FeatureChangeProjectEvent = FeatureChangeProjectEvent;
|
|
96
|
+
class FeatureCreatedEvent extends BaseEvent {
|
|
97
|
+
constructor(p) {
|
|
98
|
+
super(exports.FEATURE_CREATED, p.createdBy, p.tags);
|
|
99
|
+
const { project, featureName, data } = p;
|
|
100
|
+
this.project = project;
|
|
101
|
+
this.featureName = featureName;
|
|
102
|
+
this.data = data;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.FeatureCreatedEvent = FeatureCreatedEvent;
|
|
106
|
+
class FeatureArchivedEvent extends BaseEvent {
|
|
107
|
+
constructor(p) {
|
|
108
|
+
super(exports.FEATURE_ARCHIVED, p.createdBy, p.tags);
|
|
109
|
+
const { project, featureName } = p;
|
|
110
|
+
this.project = project;
|
|
111
|
+
this.featureName = featureName;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.FeatureArchivedEvent = FeatureArchivedEvent;
|
|
115
|
+
class FeatureRevivedEvent extends BaseEvent {
|
|
116
|
+
constructor(p) {
|
|
117
|
+
super(exports.FEATURE_REVIVED, p.createdBy, p.tags);
|
|
118
|
+
const { project, featureName } = p;
|
|
119
|
+
this.project = project;
|
|
120
|
+
this.featureName = featureName;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.FeatureRevivedEvent = FeatureRevivedEvent;
|
|
124
|
+
class FeatureDeletedEvent extends BaseEvent {
|
|
125
|
+
constructor(p) {
|
|
126
|
+
super(exports.FEATURE_DELETED, p.createdBy, p.tags);
|
|
127
|
+
const { project, featureName, preData } = p;
|
|
128
|
+
this.project = project;
|
|
129
|
+
this.featureName = featureName;
|
|
130
|
+
this.preData = preData;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.FeatureDeletedEvent = FeatureDeletedEvent;
|
|
134
|
+
class FeatureMetadataUpdateEvent extends BaseEvent {
|
|
135
|
+
constructor(p) {
|
|
136
|
+
super(exports.FEATURE_METADATA_UPDATED, p.createdBy, p.tags);
|
|
137
|
+
const { project, featureName, data, preData } = p;
|
|
138
|
+
this.project = project;
|
|
139
|
+
this.featureName = featureName;
|
|
140
|
+
this.data = data;
|
|
141
|
+
this.preData = preData;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.FeatureMetadataUpdateEvent = FeatureMetadataUpdateEvent;
|
|
145
|
+
class FeatureStrategyAddEvent extends BaseEvent {
|
|
146
|
+
constructor(p) {
|
|
147
|
+
super(exports.FEATURE_STRATEGY_ADD, p.createdBy, p.tags);
|
|
148
|
+
const { project, featureName, environment, data } = p;
|
|
149
|
+
this.project = project;
|
|
150
|
+
this.featureName = featureName;
|
|
151
|
+
this.environment = environment;
|
|
152
|
+
this.data = data;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.FeatureStrategyAddEvent = FeatureStrategyAddEvent;
|
|
156
|
+
class FeatureStrategyUpdateEvent extends BaseEvent {
|
|
157
|
+
constructor(p) {
|
|
158
|
+
super(exports.FEATURE_STRATEGY_UPDATE, p.createdBy, p.tags);
|
|
159
|
+
const { project, featureName, environment, data, preData } = p;
|
|
160
|
+
this.project = project;
|
|
161
|
+
this.featureName = featureName;
|
|
162
|
+
this.environment = environment;
|
|
163
|
+
this.data = data;
|
|
164
|
+
this.preData = preData;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.FeatureStrategyUpdateEvent = FeatureStrategyUpdateEvent;
|
|
168
|
+
class FeatureStrategyRemoveEvent extends BaseEvent {
|
|
169
|
+
constructor(p) {
|
|
170
|
+
super(exports.FEATURE_STRATEGY_REMOVE, p.createdBy, p.tags);
|
|
171
|
+
const { project, featureName, environment, preData } = p;
|
|
172
|
+
this.project = project;
|
|
173
|
+
this.featureName = featureName;
|
|
174
|
+
this.environment = environment;
|
|
175
|
+
this.preData = preData;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.FeatureStrategyRemoveEvent = FeatureStrategyRemoveEvent;
|
|
59
179
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/types/events.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/types/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ export interface IConstraint {
|
|
|
7
7
|
operator: string;
|
|
8
8
|
values: string[];
|
|
9
9
|
}
|
|
10
|
+
export declare enum WeightType {
|
|
11
|
+
VARIABLE = "variable",
|
|
12
|
+
FIX = "fix"
|
|
13
|
+
}
|
|
10
14
|
export interface IStrategyConfig {
|
|
11
15
|
id?: string;
|
|
12
16
|
name: string;
|
|
@@ -170,18 +174,6 @@ export interface IAddonConfig {
|
|
|
170
174
|
getLogger: LogProvider;
|
|
171
175
|
unleashUrl: string;
|
|
172
176
|
}
|
|
173
|
-
export interface ICreateEvent {
|
|
174
|
-
type: string;
|
|
175
|
-
createdBy: string;
|
|
176
|
-
project?: string;
|
|
177
|
-
environment?: string;
|
|
178
|
-
data?: any;
|
|
179
|
-
tags?: ITag[];
|
|
180
|
-
}
|
|
181
|
-
export interface IEvent extends ICreateEvent {
|
|
182
|
-
id: number;
|
|
183
|
-
createdAt: Date;
|
|
184
|
-
}
|
|
185
177
|
export interface IUserWithRole {
|
|
186
178
|
id: number;
|
|
187
179
|
roleId: number;
|
package/dist/lib/types/model.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoleType = exports.RoleName = exports.PermissionType = void 0;
|
|
3
|
+
exports.RoleType = exports.RoleName = exports.PermissionType = exports.WeightType = void 0;
|
|
4
|
+
var WeightType;
|
|
5
|
+
(function (WeightType) {
|
|
6
|
+
WeightType["VARIABLE"] = "variable";
|
|
7
|
+
WeightType["FIX"] = "fix";
|
|
8
|
+
})(WeightType = exports.WeightType || (exports.WeightType = {}));
|
|
4
9
|
var PermissionType;
|
|
5
10
|
(function (PermissionType) {
|
|
6
11
|
PermissionType["root"] = "root";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/lib/types/model.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/lib/types/model.ts"],"names":[],"mappings":";;;AAUA,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,mCAAqB,CAAA;IACrB,yBAAW,CAAA;AACf,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAgND,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,+BAAa,CAAA;IACb,qCAAmB,CAAA;AACvB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,wDAAwD;IACxD,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,2BAAe,CAAA;IACf,6BAAiB,CAAA;AACrB,CAAC,EAPW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAOnB;AAED,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,+BAAmB,CAAA;AACvB,CAAC,EAHW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAGnB"}
|
|
@@ -23,6 +23,7 @@ import EnvironmentService from '../services/environment-service';
|
|
|
23
23
|
import FeatureTagService from '../services/feature-tag-service';
|
|
24
24
|
import ProjectHealthService from '../services/project-health-service';
|
|
25
25
|
import ClientMetricsServiceV2 from '../services/client-metrics/client-metrics-service-v2';
|
|
26
|
+
import UserSplashService from '../services/user-splash-service';
|
|
26
27
|
export interface IUnleashServices {
|
|
27
28
|
accessService: AccessService;
|
|
28
29
|
addonService: AddonService;
|
|
@@ -50,4 +51,5 @@ export interface IUnleashServices {
|
|
|
50
51
|
userFeedbackService: UserFeedbackService;
|
|
51
52
|
userService: UserService;
|
|
52
53
|
versionService: VersionService;
|
|
54
|
+
userSplashService: UserSplashService;
|
|
53
55
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
|
-
import {
|
|
3
|
+
import { IBaseEvent, IEvent } from '../events';
|
|
4
4
|
import { Store } from './store';
|
|
5
5
|
export interface IEventStore extends Store<IEvent, number>, EventEmitter {
|
|
6
|
-
store(event:
|
|
7
|
-
batchStore(events:
|
|
6
|
+
store(event: IBaseEvent): Promise<void>;
|
|
7
|
+
batchStore(events: IBaseEvent[]): Promise<void>;
|
|
8
8
|
getEvents(): Promise<IEvent[]>;
|
|
9
9
|
getEventsFilterByType(name: string): Promise<IEvent[]>;
|
|
10
|
+
getEventsForFeature(featureName: string): Promise<IEvent[]>;
|
|
10
11
|
getEventsFilterByProject(project: string): Promise<IEvent[]>;
|
|
11
12
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FeatureToggle, FeatureToggleDTO } from '../model';
|
|
1
|
+
import { FeatureToggle, FeatureToggleDTO, IVariant } from '../model';
|
|
2
2
|
import { Store } from './store';
|
|
3
3
|
export interface IFeatureToggleQuery {
|
|
4
4
|
archived: boolean;
|
|
@@ -14,4 +14,6 @@ export interface IFeatureToggleStore extends Store<FeatureToggle, string> {
|
|
|
14
14
|
archive(featureName: string): Promise<FeatureToggle>;
|
|
15
15
|
revive(featureName: string): Promise<FeatureToggle>;
|
|
16
16
|
getAll(query?: Partial<IFeatureToggleQuery>): Promise<FeatureToggle[]>;
|
|
17
|
+
getVariants(featureName: string): Promise<IVariant[]>;
|
|
18
|
+
saveVariants(featureName: string, newVariants: IVariant[]): Promise<FeatureToggle>;
|
|
17
19
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Store } from './store';
|
|
2
|
+
export interface IUserSplash {
|
|
3
|
+
seen: boolean;
|
|
4
|
+
splashId: string;
|
|
5
|
+
userId: number;
|
|
6
|
+
}
|
|
7
|
+
export interface IUserSplashKey {
|
|
8
|
+
userId: number;
|
|
9
|
+
splashId: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IUserSplashStore extends Store<IUserSplash, IUserSplashKey> {
|
|
12
|
+
getAllUserSplashs(userId: number): Promise<IUserSplash[]>;
|
|
13
|
+
getSplash(userId: number, splashId: string): Promise<IUserSplash>;
|
|
14
|
+
updateSplash(splash: IUserSplash): Promise<IUserSplash>;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-splash-store.js","sourceRoot":"","sources":["../../../../src/lib/types/stores/user-splash-store.ts"],"names":[],"mappings":""}
|
|
@@ -23,6 +23,7 @@ import { IFeatureStrategiesStore } from './stores/feature-strategies-store';
|
|
|
23
23
|
import { IEnvironmentStore } from './stores/environment-store';
|
|
24
24
|
import { IFeatureToggleClientStore } from './stores/feature-toggle-client-store';
|
|
25
25
|
import { IClientMetricsStoreV2 } from './stores/client-metrics-store-v2';
|
|
26
|
+
import { IUserSplashStore } from './stores/user-splash-store';
|
|
26
27
|
export interface IUnleashStores {
|
|
27
28
|
accessStore: IAccessStore;
|
|
28
29
|
addonStore: IAddonStore;
|
|
@@ -49,4 +50,5 @@ export interface IUnleashStores {
|
|
|
49
50
|
tagTypeStore: ITagTypeStore;
|
|
50
51
|
userFeedbackStore: IUserFeedbackStore;
|
|
51
52
|
userStore: IUserStore;
|
|
53
|
+
userSplashStore: IUserSplashStore;
|
|
52
54
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
exports.up = function (db, cb) {
|
|
3
|
+
db.runSql(`
|
|
4
|
+
ALTER TABLE events
|
|
5
|
+
ADD COLUMN feature_name TEXT;
|
|
6
|
+
CREATE INDEX feature_name_idx ON events(feature_name);
|
|
7
|
+
`, cb);
|
|
8
|
+
};
|
|
9
|
+
exports.down = function (db, cb) {
|
|
10
|
+
db.runSql(`
|
|
11
|
+
DROP INDEX feature_name_idx;
|
|
12
|
+
ALTER TABLE events
|
|
13
|
+
DROP COLUMN feature_name;
|
|
14
|
+
`, cb);
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=20211105104316-add-feature-name-column-to-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20211105104316-add-feature-name-column-to-events.js","sourceRoot":"","sources":["../../src/migrations/20211105104316-add-feature-name-column-to-events.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL;;;;KAIH,EACG,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CACL;;;;KAIH,EACG,EAAE,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
exports.up = function (db, cb) {
|
|
3
|
+
db.runSql(`ALTER TABLE events ADD COLUMN pre_data jsonb;`, cb);
|
|
4
|
+
};
|
|
5
|
+
exports.down = function (db, cb) {
|
|
6
|
+
db.runSql(`ALTER TABLE events DROP COLUMN pre_data;`, cb);
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=20211105105509-add-predata-column-to-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20211105105509-add-predata-column-to-events.js","sourceRoot":"","sources":["../../src/migrations/20211105105509-add-predata-column-to-events.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
exports.up = function (db, cb) {
|
|
3
|
+
db.runSql(`
|
|
4
|
+
CREATE TABLE IF NOT EXISTS user_splash
|
|
5
|
+
(user_id INTEGER NOT NULL references users (id) ON DELETE CASCADE,
|
|
6
|
+
splash_id TEXT,
|
|
7
|
+
seen BOOLEAN NOT NULL DEFAULT false,
|
|
8
|
+
PRIMARY KEY (user_id, splash_id));
|
|
9
|
+
CREATE INDEX user_splash_user_id_idx ON user_splash (user_id);
|
|
10
|
+
`, cb);
|
|
11
|
+
};
|
|
12
|
+
exports.down = function (db, cb) {
|
|
13
|
+
db.runSql(`
|
|
14
|
+
DROP INDEX user_splash_user_id_idx;
|
|
15
|
+
DROP TABLE user_splash;
|
|
16
|
+
`, cb);
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=20211108130333-create-user-splash-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20211108130333-create-user-splash-table.js","sourceRoot":"","sources":["../../src/migrations/20211108130333-create-user-splash-table.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL;;;;;;;SAOC,EACD,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CACL;;;CAGP,EACO,EAAE,CACL,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
exports.up = function (db, cb) {
|
|
2
|
+
db.runSql(`INSERT INTO user_splash(splash_id, user_id, seen) SELECT 'environment', u.id, false FROM users u`, cb);
|
|
3
|
+
};
|
|
4
|
+
exports.down = function (db, cb) {
|
|
5
|
+
db.runSql('DELETE FROM user_splash', cb);
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=20211109103930-add-splash-entry-for-users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20211109103930-add-splash-entry-for-users.js","sourceRoot":"","sources":["../../src/migrations/20211109103930-add-splash-entry-for-users.js"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL,kGAAkG,EAClG,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
exports.up = function (db, cb) {
|
|
2
|
+
db.runSql(`
|
|
3
|
+
UPDATE environments
|
|
4
|
+
SET enabled = false
|
|
5
|
+
WHERE name = 'default'
|
|
6
|
+
AND NOT EXISTS (select * from features);
|
|
7
|
+
|
|
8
|
+
DELETE FROM project_environments
|
|
9
|
+
WHERE environment_name = 'default'
|
|
10
|
+
AND NOT EXISTS (select * from features);
|
|
11
|
+
|
|
12
|
+
INSERT INTO project_environments(project_id, environment_name)
|
|
13
|
+
SELECT 'default', 'development'
|
|
14
|
+
WHERE NOT EXISTS (select * from features);
|
|
15
|
+
|
|
16
|
+
INSERT INTO project_environments(project_id, environment_name)
|
|
17
|
+
SELECT 'default', 'production'
|
|
18
|
+
WHERE NOT EXISTS (select * from features);
|
|
19
|
+
`, cb);
|
|
20
|
+
};
|
|
21
|
+
exports.down = function (db, cb) {
|
|
22
|
+
db.runSql('', cb);
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=20211126112551-disable-default-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20211126112551-disable-default-environment.js","sourceRoot":"","sources":["../../src/migrations/20211126112551-disable-default-environment.js"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL;;;;;;;;;;;;;;;;;OAiBD,EACC,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -146,19 +146,21 @@ test('should return toggle summary', async () => {
|
|
|
146
146
|
.get('/api/admin/client-metrics/features/demo')
|
|
147
147
|
.expect('Content-Type', /json/)
|
|
148
148
|
.expect(200);
|
|
149
|
+
const test = demo.lastHourUsage.find((u) => u.environment === 'test');
|
|
150
|
+
const defaultEnv = demo.lastHourUsage.find((u) => u.environment === 'default');
|
|
149
151
|
expect(demo.featureName).toBe('demo');
|
|
150
152
|
expect(demo.lastHourUsage).toHaveLength(2);
|
|
151
|
-
expect(
|
|
152
|
-
expect(
|
|
153
|
-
expect(
|
|
154
|
-
expect(
|
|
155
|
-
expect(
|
|
156
|
-
expect(
|
|
153
|
+
expect(test.environment).toBe('test');
|
|
154
|
+
expect(test.yes).toBe(2);
|
|
155
|
+
expect(test.no).toBe(6);
|
|
156
|
+
expect(defaultEnv.environment).toBe('default');
|
|
157
|
+
expect(defaultEnv.yes).toBe(5);
|
|
158
|
+
expect(defaultEnv.no).toBe(4);
|
|
157
159
|
expect(demo.seenApplications).toStrictEqual(['backend-api', 'web']);
|
|
158
160
|
});
|
|
159
161
|
test('should only include last hour of metrics return toggle summary', async () => {
|
|
160
162
|
const now = new Date();
|
|
161
|
-
const
|
|
163
|
+
const dateTwoHoursAgo = (0, date_fns_1.subHours)(now, 2);
|
|
162
164
|
const metrics = [
|
|
163
165
|
{
|
|
164
166
|
featureName: 'demo',
|
|
@@ -196,7 +198,7 @@ test('should only include last hour of metrics return toggle summary', async ()
|
|
|
196
198
|
featureName: 'demo',
|
|
197
199
|
appName: 'backend-api',
|
|
198
200
|
environment: 'test',
|
|
199
|
-
timestamp:
|
|
201
|
+
timestamp: dateTwoHoursAgo,
|
|
200
202
|
yes: 55,
|
|
201
203
|
no: 55,
|
|
202
204
|
},
|
|
@@ -206,14 +208,16 @@ test('should only include last hour of metrics return toggle summary', async ()
|
|
|
206
208
|
.get('/api/admin/client-metrics/features/demo')
|
|
207
209
|
.expect('Content-Type', /json/)
|
|
208
210
|
.expect(200);
|
|
211
|
+
const test = demo.lastHourUsage.find((u) => u.environment === 'test');
|
|
212
|
+
const defaultEnv = demo.lastHourUsage.find((u) => u.environment === 'default');
|
|
209
213
|
expect(demo.featureName).toBe('demo');
|
|
210
214
|
expect(demo.lastHourUsage).toHaveLength(2);
|
|
211
|
-
expect(
|
|
212
|
-
expect(
|
|
213
|
-
expect(
|
|
214
|
-
expect(
|
|
215
|
-
expect(
|
|
216
|
-
expect(
|
|
215
|
+
expect(defaultEnv.environment).toBe('default');
|
|
216
|
+
expect(defaultEnv.yes).toBe(5);
|
|
217
|
+
expect(defaultEnv.no).toBe(4);
|
|
218
|
+
expect(test.environment).toBe('test');
|
|
219
|
+
expect(test.yes).toBe(2);
|
|
220
|
+
expect(test.no).toBe(6);
|
|
217
221
|
expect(demo.seenApplications).toStrictEqual(['backend-api', 'web']);
|
|
218
222
|
});
|
|
219
223
|
//# sourceMappingURL=client-metrics.e2e.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-metrics.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/admin/client-metrics.e2e.test.ts"],"names":[],"mappings":";;;;;AAAA,gFAA8D;AAC9D,2DAAqE;AACrE,4EAAoD;AAEpD,uCAAoC;AAEpC,IAAI,GAAG,CAAC;AACR,IAAI,EAAW,CAAC;AAEhB,SAAS,CAAC,KAAK,IAAI,EAAE;IACjB,EAAE,GAAG,MAAM,IAAA,uBAAM,EAAC,uBAAuB,EAAE,mBAAS,CAAC,CAAC;IACtD,GAAG,GAAG,MAAM,IAAA,sCAAwB,EAAC,EAAE,CAAC,MAAM,EAAE;QAC5C,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;KACjD,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAChB,IAAI,EAAE,EAAE;QACJ,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;KACtB;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,MAAM,OAAO,GAAwB;QACjC;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,EAAE;SACT;QACD;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEjE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO;SACnC,GAAG,CAAC,6CAA6C,CAAC;SAClD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;SAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO;SACjC,GAAG,CAAC,2CAA2C,CAAC;SAChD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;SAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,MAAM,OAAO,GAAwB;QACjC;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,EAAE;SACT;QACD;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;QACD;YACI,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,CAAC;SACR;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEjE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO;SACnC,GAAG,CAAC,yCAAyC,CAAC;SAC9C,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;SAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"client-metrics.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/admin/client-metrics.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,9 @@ beforeAll(async () => {
|
|
|
22
22
|
await app.services.featureToggleServiceV2.createFeatureToggle(projectId, toggle, username);
|
|
23
23
|
await app.services.featureToggleServiceV2.createStrategy(strategy, { projectId, featureName: toggle.name, environment: constants_1.DEFAULT_ENV }, username);
|
|
24
24
|
};
|
|
25
|
+
const createVariants = async (featureName, variants) => {
|
|
26
|
+
await app.services.featureToggleServiceV2.saveVariants(featureName, variants);
|
|
27
|
+
};
|
|
25
28
|
await createToggle({
|
|
26
29
|
name: 'featureX',
|
|
27
30
|
description: 'the #1 feature',
|
|
@@ -80,23 +83,23 @@ beforeAll(async () => {
|
|
|
80
83
|
await createToggle({
|
|
81
84
|
name: 'feature.with.variants',
|
|
82
85
|
description: 'A feature toggle with variants',
|
|
83
|
-
variants: [
|
|
84
|
-
{
|
|
85
|
-
name: 'control',
|
|
86
|
-
weight: 50,
|
|
87
|
-
weightType: 'variable',
|
|
88
|
-
overrides: [],
|
|
89
|
-
stickiness: 'default',
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: 'new',
|
|
93
|
-
weight: 50,
|
|
94
|
-
weightType: 'variable',
|
|
95
|
-
overrides: [],
|
|
96
|
-
stickiness: 'default',
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
86
|
});
|
|
87
|
+
await createVariants('feature.with.variants', [
|
|
88
|
+
{
|
|
89
|
+
name: 'control',
|
|
90
|
+
weight: 50,
|
|
91
|
+
weightType: 'variable',
|
|
92
|
+
overrides: [],
|
|
93
|
+
stickiness: 'default',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'new',
|
|
97
|
+
weight: 50,
|
|
98
|
+
weightType: 'variable',
|
|
99
|
+
overrides: [],
|
|
100
|
+
stickiness: 'default',
|
|
101
|
+
},
|
|
102
|
+
]);
|
|
100
103
|
});
|
|
101
104
|
afterAll(async () => {
|
|
102
105
|
await app.destroy();
|
|
@@ -137,7 +140,7 @@ test('creates new feature toggle', async () => {
|
|
|
137
140
|
});
|
|
138
141
|
});
|
|
139
142
|
test('creates new feature toggle with variants', async () => {
|
|
140
|
-
expect.assertions(
|
|
143
|
+
expect.assertions(1);
|
|
141
144
|
return app.request
|
|
142
145
|
.post('/api/admin/features')
|
|
143
146
|
.send({
|
|
@@ -150,7 +153,10 @@ test('creates new feature toggle with variants', async () => {
|
|
|
150
153
|
],
|
|
151
154
|
})
|
|
152
155
|
.set('Content-Type', 'application/json')
|
|
153
|
-
.expect(201)
|
|
156
|
+
.expect(201)
|
|
157
|
+
.expect((res) => {
|
|
158
|
+
expect(res.body.variants).toHaveLength(2);
|
|
159
|
+
});
|
|
154
160
|
});
|
|
155
161
|
test('fetch feature toggle with variants', async () => {
|
|
156
162
|
expect.assertions(1);
|