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.
Files changed (186) hide show
  1. package/README.md +1 -0
  2. package/dist/lib/addons/addon.d.ts +2 -1
  3. package/dist/lib/addons/addon.js.map +1 -1
  4. package/dist/lib/addons/datadog.d.ts +2 -1
  5. package/dist/lib/addons/datadog.js.map +1 -1
  6. package/dist/lib/addons/datadog.test.js +3 -0
  7. package/dist/lib/addons/datadog.test.js.map +1 -1
  8. package/dist/lib/addons/feature-event-formatter-md.d.ts +1 -1
  9. package/dist/lib/addons/feature-event-formatter-md.js +13 -14
  10. package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
  11. package/dist/lib/addons/slack.d.ts +2 -1
  12. package/dist/lib/addons/slack.js.map +1 -1
  13. package/dist/lib/addons/slack.test.js +6 -0
  14. package/dist/lib/addons/slack.test.js.map +1 -1
  15. package/dist/lib/addons/teams.d.ts +2 -1
  16. package/dist/lib/addons/teams.js.map +1 -1
  17. package/dist/lib/addons/teams.test.js +3 -0
  18. package/dist/lib/addons/teams.test.js.map +1 -1
  19. package/dist/lib/addons/webhook.d.ts +8 -2
  20. package/dist/lib/addons/webhook.js +0 -1
  21. package/dist/lib/addons/webhook.js.map +1 -1
  22. package/dist/lib/addons/webhook.test.js +2 -0
  23. package/dist/lib/addons/webhook.test.js.map +1 -1
  24. package/dist/lib/create-config.js +5 -15
  25. package/dist/lib/create-config.js.map +1 -1
  26. package/dist/lib/create-config.test.js +0 -37
  27. package/dist/lib/create-config.test.js.map +1 -1
  28. package/dist/lib/db/client-metrics-store-v2.js +5 -1
  29. package/dist/lib/db/client-metrics-store-v2.js.map +1 -1
  30. package/dist/lib/db/event-store.d.ts +10 -6
  31. package/dist/lib/db/event-store.js +21 -1
  32. package/dist/lib/db/event-store.js.map +1 -1
  33. package/dist/lib/db/feature-strategy-store.js +1 -0
  34. package/dist/lib/db/feature-strategy-store.js.map +1 -1
  35. package/dist/lib/db/feature-toggle-store.d.ts +4 -1
  36. package/dist/lib/db/feature-toggle-store.js +27 -2
  37. package/dist/lib/db/feature-toggle-store.js.map +1 -1
  38. package/dist/lib/db/index.js +2 -0
  39. package/dist/lib/db/index.js.map +1 -1
  40. package/dist/lib/db/user-splash-store.d.ts +19 -0
  41. package/dist/lib/db/user-splash-store.js +70 -0
  42. package/dist/lib/db/user-splash-store.js.map +1 -0
  43. package/dist/lib/error/operation-denied-error.d.ts +4 -0
  44. package/dist/lib/error/operation-denied-error.js +24 -0
  45. package/dist/lib/error/operation-denied-error.js.map +1 -0
  46. package/dist/lib/metrics.js +17 -8
  47. package/dist/lib/metrics.js.map +1 -1
  48. package/dist/lib/metrics.test.js +1 -0
  49. package/dist/lib/metrics.test.js.map +1 -1
  50. package/dist/lib/routes/admin-api/event.d.ts +8 -4
  51. package/dist/lib/routes/admin-api/event.js +8 -10
  52. package/dist/lib/routes/admin-api/event.js.map +1 -1
  53. package/dist/lib/routes/admin-api/feature.js +1 -1
  54. package/dist/lib/routes/admin-api/feature.js.map +1 -1
  55. package/dist/lib/routes/admin-api/index.js +2 -0
  56. package/dist/lib/routes/admin-api/index.js.map +1 -1
  57. package/dist/lib/routes/admin-api/project/index.js +2 -0
  58. package/dist/lib/routes/admin-api/project/index.js.map +1 -1
  59. package/dist/lib/routes/admin-api/project/variants.d.ts +21 -0
  60. package/dist/lib/routes/admin-api/project/variants.js +41 -0
  61. package/dist/lib/routes/admin-api/project/variants.js.map +1 -0
  62. package/dist/lib/routes/admin-api/state.js +0 -1
  63. package/dist/lib/routes/admin-api/state.js.map +1 -1
  64. package/dist/lib/routes/admin-api/user-splash-controller.d.ts +10 -0
  65. package/dist/lib/routes/admin-api/user-splash-controller.js +28 -0
  66. package/dist/lib/routes/admin-api/user-splash-controller.js.map +1 -0
  67. package/dist/lib/routes/admin-api/user.d.ts +2 -1
  68. package/dist/lib/routes/admin-api/user.js +7 -2
  69. package/dist/lib/routes/admin-api/user.js.map +1 -1
  70. package/dist/lib/routes/client-api/metrics.d.ts +0 -1
  71. package/dist/lib/routes/client-api/metrics.js +2 -10
  72. package/dist/lib/routes/client-api/metrics.js.map +1 -1
  73. package/dist/lib/routes/util.js +18 -16
  74. package/dist/lib/routes/util.js.map +1 -1
  75. package/dist/lib/schema/feature-schema.d.ts +1 -0
  76. package/dist/lib/schema/feature-schema.js +6 -7
  77. package/dist/lib/schema/feature-schema.js.map +1 -1
  78. package/dist/lib/services/addon-service-test-simple-addon.d.ts +1 -1
  79. package/dist/lib/services/addon-service-test-simple-addon.js.map +1 -1
  80. package/dist/lib/services/client-metrics/client-metrics-service-v2.js +3 -3
  81. package/dist/lib/services/client-metrics/client-metrics-service-v2.js.map +1 -1
  82. package/dist/lib/services/client-metrics/index.d.ts +6 -5
  83. package/dist/lib/services/client-metrics/index.js +6 -3
  84. package/dist/lib/services/client-metrics/index.js.map +1 -1
  85. package/dist/lib/services/client-metrics/list.d.ts +19 -16
  86. package/dist/lib/services/client-metrics/list.js +6 -4
  87. package/dist/lib/services/client-metrics/list.js.map +1 -1
  88. package/dist/lib/services/client-metrics/list.test.js +9 -5
  89. package/dist/lib/services/client-metrics/list.test.js.map +1 -1
  90. package/dist/lib/services/client-metrics/ttl-list.d.ts +20 -14
  91. package/dist/lib/services/client-metrics/ttl-list.js +17 -12
  92. package/dist/lib/services/client-metrics/ttl-list.js.map +1 -1
  93. package/dist/lib/services/client-metrics/ttl-list.test.js +14 -10
  94. package/dist/lib/services/client-metrics/ttl-list.test.js.map +1 -1
  95. package/dist/lib/services/event-service.d.ts +1 -1
  96. package/dist/lib/services/event-service.js +1 -1
  97. package/dist/lib/services/event-service.js.map +1 -1
  98. package/dist/lib/services/feature-tag-service.js +7 -11
  99. package/dist/lib/services/feature-tag-service.js.map +1 -1
  100. package/dist/lib/services/feature-toggle-service.d.ts +25 -15
  101. package/dist/lib/services/feature-toggle-service.js +198 -136
  102. package/dist/lib/services/feature-toggle-service.js.map +1 -1
  103. package/dist/lib/services/index.js +3 -0
  104. package/dist/lib/services/index.js.map +1 -1
  105. package/dist/lib/services/project-health-service.d.ts +2 -2
  106. package/dist/lib/services/project-health-service.js +1 -0
  107. package/dist/lib/services/project-health-service.js.map +1 -1
  108. package/dist/lib/services/project-service.d.ts +2 -3
  109. package/dist/lib/services/project-service.js +12 -18
  110. package/dist/lib/services/project-service.js.map +1 -1
  111. package/dist/lib/services/user-service.d.ts +3 -2
  112. package/dist/lib/services/user-service.js +37 -21
  113. package/dist/lib/services/user-service.js.map +1 -1
  114. package/dist/lib/services/user-splash-service.d.ts +12 -0
  115. package/dist/lib/services/user-splash-service.js +33 -0
  116. package/dist/lib/services/user-splash-service.js.map +1 -0
  117. package/dist/lib/types/events.d.ts +165 -2
  118. package/dist/lib/types/events.js +124 -4
  119. package/dist/lib/types/events.js.map +1 -1
  120. package/dist/lib/types/model.d.ts +4 -12
  121. package/dist/lib/types/model.js +6 -1
  122. package/dist/lib/types/model.js.map +1 -1
  123. package/dist/lib/types/services.d.ts +2 -0
  124. package/dist/lib/types/stores/event-store.d.ts +4 -3
  125. package/dist/lib/types/stores/feature-toggle-store.d.ts +3 -1
  126. package/dist/lib/types/stores/user-splash-store.d.ts +15 -0
  127. package/dist/lib/types/stores/user-splash-store.js +3 -0
  128. package/dist/lib/types/stores/user-splash-store.js.map +1 -0
  129. package/dist/lib/types/stores.d.ts +2 -0
  130. package/dist/migrations/20211105104316-add-feature-name-column-to-events.d.ts +2 -0
  131. package/dist/migrations/20211105104316-add-feature-name-column-to-events.js +16 -0
  132. package/dist/migrations/20211105104316-add-feature-name-column-to-events.js.map +1 -0
  133. package/dist/migrations/20211105105509-add-predata-column-to-events.d.ts +2 -0
  134. package/dist/migrations/20211105105509-add-predata-column-to-events.js +8 -0
  135. package/dist/migrations/20211105105509-add-predata-column-to-events.js.map +1 -0
  136. package/dist/migrations/20211108130333-create-user-splash-table.d.ts +2 -0
  137. package/dist/migrations/20211108130333-create-user-splash-table.js +18 -0
  138. package/dist/migrations/20211108130333-create-user-splash-table.js.map +1 -0
  139. package/dist/migrations/20211109103930-add-splash-entry-for-users.d.ts +2 -0
  140. package/dist/migrations/20211109103930-add-splash-entry-for-users.js +7 -0
  141. package/dist/migrations/20211109103930-add-splash-entry-for-users.js.map +1 -0
  142. package/dist/migrations/20211126112551-disable-default-environment.d.ts +2 -0
  143. package/dist/migrations/20211126112551-disable-default-environment.js +24 -0
  144. package/dist/migrations/20211126112551-disable-default-environment.js.map +1 -0
  145. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +18 -14
  146. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -1
  147. package/dist/test/e2e/api/admin/feature.e2e.test.js +24 -18
  148. package/dist/test/e2e/api/admin/feature.e2e.test.js.map +1 -1
  149. package/dist/test/e2e/api/admin/project/features.e2e.test.js +31 -8
  150. package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
  151. package/dist/test/e2e/api/admin/project/project.health.e2e.test.js +60 -0
  152. package/dist/test/e2e/api/admin/project/project.health.e2e.test.js.map +1 -1
  153. package/dist/{lib/event-differ.test.d.ts → test/e2e/api/admin/project/variants.e2e.test.d.ts} +0 -0
  154. package/dist/test/e2e/api/admin/project/variants.e2e.test.js +727 -0
  155. package/dist/test/e2e/api/admin/project/variants.e2e.test.js.map +1 -0
  156. package/dist/test/e2e/api/admin/splash.e2e.test.d.ts +1 -0
  157. package/dist/test/e2e/api/admin/splash.e2e.test.js +51 -0
  158. package/dist/test/e2e/api/admin/splash.e2e.test.js.map +1 -0
  159. package/dist/test/e2e/api/admin/user-admin.e2e.test.js +2 -16
  160. package/dist/test/e2e/api/admin/user-admin.e2e.test.js.map +1 -1
  161. package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js.map +1 -1
  162. package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
  163. package/dist/test/e2e/services/project-service.e2e.test.js +0 -30
  164. package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
  165. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  166. package/dist/test/e2e/stores/user-splash-store.e2e.test.d.ts +1 -0
  167. package/dist/test/e2e/stores/user-splash-store.e2e.test.js +74 -0
  168. package/dist/test/e2e/stores/user-splash-store.e2e.test.js.map +1 -0
  169. package/dist/test/fixtures/fake-event-store.d.ts +2 -1
  170. package/dist/test/fixtures/fake-event-store.js +3 -0
  171. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  172. package/dist/test/fixtures/fake-feature-toggle-store.d.ts +3 -1
  173. package/dist/test/fixtures/fake-feature-toggle-store.js +9 -0
  174. package/dist/test/fixtures/fake-feature-toggle-store.js.map +1 -1
  175. package/dist/test/fixtures/fake-user-splash-store.d.ts +12 -0
  176. package/dist/test/fixtures/fake-user-splash-store.js +40 -0
  177. package/dist/test/fixtures/fake-user-splash-store.js.map +1 -0
  178. package/dist/test/fixtures/store.js +2 -0
  179. package/dist/test/fixtures/store.js.map +1 -1
  180. package/docs/api/oas/openapi.yaml +35 -55
  181. package/package.json +16 -17
  182. package/dist/lib/event-differ.d.ts +0 -1
  183. package/dist/lib/event-differ.js +0 -117
  184. package/dist/lib/event-differ.js.map +0 -1
  185. package/dist/lib/event-differ.test.js +0 -142
  186. package/dist/lib/event-differ.test.js.map +0 -1
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USER_DELETED = exports.USER_UPDATED = 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.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.FEATURE_ENVIRONMENT_DISABLED = exports.FEATURE_ENVIRONMENT_ENABLED = exports.ENVIRONMENT_IMPORT = exports.DROP_ENVIRONMENTS = void 0;
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
- exports.FEATURE_ENVIRONMENT_ENABLED = 'feature-environment-enabled';
58
- exports.FEATURE_ENVIRONMENT_DISABLED = 'feature-environment-disabled';
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":";;;;AAAa,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAC5C,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAC5C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,2BAA2B,GAAG,6BAA6B,CAAC;AAC5D,QAAA,4BAA4B,GAAG,8BAA8B,CAAC"}
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;
@@ -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":";;;AAwOA,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"}
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 { ICreateEvent, IEvent } from '../model';
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: ICreateEvent): Promise<void>;
7
- batchStore(events: ICreateEvent[]): Promise<void>;
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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user-splash-store.js.map
@@ -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,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -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,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -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,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -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,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -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,2 @@
1
+ export function up(db: any, cb: any): void;
2
+ export function down(db: any, cb: any): void;
@@ -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(demo.lastHourUsage[0].environment).toBe('default');
152
- expect(demo.lastHourUsage[0].yes).toBe(5);
153
- expect(demo.lastHourUsage[0].no).toBe(4);
154
- expect(demo.lastHourUsage[1].environment).toBe('test');
155
- expect(demo.lastHourUsage[1].yes).toBe(2);
156
- expect(demo.lastHourUsage[1].no).toBe(6);
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 dateOneHourAgo = (0, date_fns_1.subHours)(now, 1);
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: dateOneHourAgo,
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(demo.lastHourUsage[0].environment).toBe('default');
212
- expect(demo.lastHourUsage[0].yes).toBe(5);
213
- expect(demo.lastHourUsage[0].no).toBe(4);
214
- expect(demo.lastHourUsage[1].environment).toBe('test');
215
- expect(demo.lastHourUsage[1].yes).toBe(2);
216
- expect(demo.lastHourUsage[1].no).toBe(6);
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":"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"}
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(0);
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);