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 +1 @@
1
- {"version":3,"file":"fake-feature-toggle-store.js","sourceRoot":"","sources":["../../../src/test/fixtures/fake-feature-toggle-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fake-feature-toggle-store.js","sourceRoot":"","sources":["../../../src/test/fixtures/fake-feature-toggle-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { IUserSplashKey, IUserSplash, IUserSplashStore } from '../../lib/types/stores/user-splash-store';
2
+ export default class FakeUserSplashStore implements IUserSplashStore {
3
+ getAllUserSplashs(userId: number): Promise<IUserSplash[]>;
4
+ getSplash(userId: number, splashId: string): Promise<IUserSplash>;
5
+ updateSplash(splash: IUserSplash): Promise<IUserSplash>;
6
+ exists(key: IUserSplashKey): Promise<boolean>;
7
+ get(key: IUserSplashKey): Promise<IUserSplash>;
8
+ getAll(): Promise<IUserSplash[]>;
9
+ delete(key: IUserSplashKey): Promise<void>;
10
+ deleteAll(): Promise<void>;
11
+ destroy(): void;
12
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class FakeUserSplashStore {
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
+ getAllUserSplashs(userId) {
6
+ return Promise.resolve([]);
7
+ }
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ getSplash(userId, splashId) {
10
+ return Promise.resolve(undefined);
11
+ }
12
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+ updateSplash(splash) {
14
+ return Promise.resolve(undefined);
15
+ }
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
+ exists(key) {
18
+ return Promise.resolve(false);
19
+ }
20
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
+ get(key) {
22
+ return Promise.resolve(undefined);
23
+ }
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ getAll() {
26
+ return Promise.resolve([]);
27
+ }
28
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
+ delete(key) {
30
+ return Promise.resolve(undefined);
31
+ }
32
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
+ deleteAll() {
34
+ return Promise.resolve(undefined);
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
+ destroy() { }
38
+ }
39
+ exports.default = FakeUserSplashStore;
40
+ //# sourceMappingURL=fake-user-splash-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-user-splash-store.js","sourceRoot":"","sources":["../../../src/test/fixtures/fake-user-splash-store.ts"],"names":[],"mappings":";;AAMA,MAAqB,mBAAmB;IACpC,6DAA6D;IAC7D,iBAAiB,CAAC,MAAc;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,MAAc,EAAE,QAAgB;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,YAAY,CAAC,MAAmB;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,GAAmB;QACtB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,6DAA6D;IAC7D,GAAG,CAAC,GAAmB;QACnB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,MAAM;QACF,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,GAAmB;QACtB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,SAAS;QACL,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,OAAO,KAAU,CAAC;CACrB;AA3CD,sCA2CC"}
@@ -28,6 +28,7 @@ const fake_feature_type_store_1 = __importDefault(require("./fake-feature-type-s
28
28
  const fake_reset_token_store_1 = __importDefault(require("./fake-reset-token-store"));
29
29
  const fake_feature_toggle_client_store_1 = __importDefault(require("./fake-feature-toggle-client-store"));
30
30
  const fake_client_metrics_store_v2_1 = __importDefault(require("./fake-client-metrics-store-v2"));
31
+ const fake_user_splash_store_1 = __importDefault(require("./fake-user-splash-store"));
31
32
  const createStores = () => {
32
33
  const db = {
33
34
  select: () => ({
@@ -61,6 +62,7 @@ const createStores = () => {
61
62
  featureTypeStore: new fake_feature_type_store_1.default(),
62
63
  resetTokenStore: new fake_reset_token_store_1.default(),
63
64
  sessionStore: new fake_session_store_1.default(),
65
+ userSplashStore: new fake_user_splash_store_1.default(),
64
66
  };
65
67
  };
66
68
  exports.default = createStores;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/test/fixtures/store.ts"],"names":[],"mappings":";;;;;AAAA,oGAAyE;AACzE,4FAAiE;AACjE,8FAAmE;AACnE,sGAA2E;AAC3E,4FAAiE;AACjE,sEAA4C;AAC5C,gFAAqD;AACrD,0EAAgD;AAChD,0FAA+D;AAC/D,8EAAoD;AACpD,0EAAgD;AAChD,8EAAoD;AACpD,wEAA8C;AAC9C,4EAAkD;AAClD,0FAA+D;AAC/D,sFAA2D;AAC3D,sFAA4D;AAC5D,oFAA0D;AAE1D,8EAAoD;AACpD,sGAA2E;AAC3E,kFAAuD;AACvD,wFAA6D;AAC7D,sFAA2D;AAC3D,0GAA8E;AAC9E,kGAAsE;AAEtE,MAAM,YAAY,GAAyB,GAAG,EAAE;IAC5C,MAAM,EAAE,GAAG;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SAChC,CAAC;KACL,CAAC;IAEF,OAAO;QACH,EAAE;QACF,uBAAuB,EAAE,IAAI,wCAA2B,EAAE;QAC1D,kBAAkB,EAAE,IAAI,mCAAsB,EAAE;QAChD,oBAAoB,EAAE,IAAI,sCAAwB,EAAE;QACpD,mBAAmB,EAAE,IAAI,oCAAuB,EAAE;QAClD,kBAAkB,EAAE,IAAI,mCAAsB,EAAE;QAChD,wBAAwB,EAAE,IAAI,0CAA4B,EAAE;QAC5D,QAAQ,EAAE,IAAI,wBAAY,EAAE;QAC5B,YAAY,EAAE,IAAI,6BAAgB,EAAE;QACpC,UAAU,EAAE,IAAI,0BAAc,EAAE;QAChC,aAAa,EAAE,IAAI,+BAAmB,EAAE;QACxC,iBAAiB,EAAE,IAAI,kCAAqB,EAAE;QAC9C,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,UAAU,EAAE,IAAI,0BAAc,EAAE;QAChC,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,SAAS,EAAE,IAAI,yBAAa,EAAE;QAC9B,WAAW,EAAE,IAAI,2BAAe,EAAE;QAClC,iBAAiB,EAAE,IAAI,kCAAqB,EAAE;QAC9C,sBAAsB,EAAE,IAAI,uCAA0B,EAAE;QACxD,eAAe,EAAE,IAAI,gCAAmB,EAAE;QAC1C,gBAAgB,EAAE,IAAI,gCAAoB,EAAE;QAC5C,uBAAuB,EAAE,IAAI,wCAA2B,EAAE;QAC1D,aAAa,EAAE,IAAI,8BAAiB,EAAE;QACtC,gBAAgB,EAAE,IAAI,iCAAoB,EAAE;QAC5C,eAAe,EAAE,IAAI,gCAAmB,EAAE;QAC1C,YAAY,EAAE,IAAI,4BAAgB,EAAE;KACvC,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/test/fixtures/store.ts"],"names":[],"mappings":";;;;;AAAA,oGAAyE;AACzE,4FAAiE;AACjE,8FAAmE;AACnE,sGAA2E;AAC3E,4FAAiE;AACjE,sEAA4C;AAC5C,gFAAqD;AACrD,0EAAgD;AAChD,0FAA+D;AAC/D,8EAAoD;AACpD,0EAAgD;AAChD,8EAAoD;AACpD,wEAA8C;AAC9C,4EAAkD;AAClD,0FAA+D;AAC/D,sFAA2D;AAC3D,sFAA4D;AAC5D,oFAA0D;AAE1D,8EAAoD;AACpD,sGAA2E;AAC3E,kFAAuD;AACvD,wFAA6D;AAC7D,sFAA2D;AAC3D,0GAA8E;AAC9E,kGAAsE;AACtE,sFAA2D;AAE3D,MAAM,YAAY,GAAyB,GAAG,EAAE;IAC5C,MAAM,EAAE,GAAG;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SAChC,CAAC;KACL,CAAC;IAEF,OAAO;QACH,EAAE;QACF,uBAAuB,EAAE,IAAI,wCAA2B,EAAE;QAC1D,kBAAkB,EAAE,IAAI,mCAAsB,EAAE;QAChD,oBAAoB,EAAE,IAAI,sCAAwB,EAAE;QACpD,mBAAmB,EAAE,IAAI,oCAAuB,EAAE;QAClD,kBAAkB,EAAE,IAAI,mCAAsB,EAAE;QAChD,wBAAwB,EAAE,IAAI,0CAA4B,EAAE;QAC5D,QAAQ,EAAE,IAAI,wBAAY,EAAE;QAC5B,YAAY,EAAE,IAAI,6BAAgB,EAAE;QACpC,UAAU,EAAE,IAAI,0BAAc,EAAE;QAChC,aAAa,EAAE,IAAI,+BAAmB,EAAE;QACxC,iBAAiB,EAAE,IAAI,kCAAqB,EAAE;QAC9C,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,UAAU,EAAE,IAAI,0BAAc,EAAE;QAChC,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,SAAS,EAAE,IAAI,yBAAa,EAAE;QAC9B,WAAW,EAAE,IAAI,2BAAe,EAAE;QAClC,iBAAiB,EAAE,IAAI,kCAAqB,EAAE;QAC9C,sBAAsB,EAAE,IAAI,uCAA0B,EAAE;QACxD,eAAe,EAAE,IAAI,gCAAmB,EAAE;QAC1C,gBAAgB,EAAE,IAAI,gCAAoB,EAAE;QAC5C,uBAAuB,EAAE,IAAI,wCAA2B,EAAE;QAC1D,aAAa,EAAE,IAAI,8BAAiB,EAAE;QACtC,gBAAgB,EAAE,IAAI,iCAAoB,EAAE;QAC5C,eAAe,EAAE,IAAI,gCAAmB,EAAE;QAC1C,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,eAAe,EAAE,IAAI,gCAAmB,EAAE;KAC7C,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
@@ -660,13 +660,19 @@ paths:
660
660
  operationId: get-admin-events
661
661
  summary: Fetch all changes in the Unleash system
662
662
  description: |-
663
- Returns one of the six event types:
663
+ Returns one of the twelve event types:
664
664
  - feature-created
665
- - feature-updated
665
+ - feature-metadata-updated
666
+ - feature-project-change
666
667
  - feature-archived
667
668
  - feature-revived
668
- - strategy-created
669
- - strategy-deleted
669
+ - feature-strategy-update
670
+ - feature-strategy-add
671
+ - feature-strategy-remove
672
+ - feature-stale-on
673
+ - feature-stale-off
674
+ - feature-environment-enabled
675
+ - feature-environment-disabled
670
676
  tags:
671
677
  - Events
672
678
  responses:
@@ -1548,15 +1554,21 @@ components:
1548
1554
  type: number
1549
1555
  example: 55
1550
1556
  type:
1551
- description: One of the six event types
1557
+ description: Identifies the event
1552
1558
  type: string
1553
1559
  enum:
1554
1560
  - feature-created
1555
- - feature-updated
1561
+ - feature-metadata-updated
1562
+ - feature-project-change
1556
1563
  - feature-archived
1557
1564
  - feature-revived
1558
- - strategy-created
1559
- - strategy-deleted
1565
+ - feature-strategy-update
1566
+ - feature-strategy-add
1567
+ - feature-strategy-remove
1568
+ - feature-stale-on
1569
+ - feature-stale-off
1570
+ - feature-environment-enabled
1571
+ - feature-environment-disabled
1560
1572
  minLength: 1
1561
1573
  example: feature-updated
1562
1574
  createdBy:
@@ -1568,53 +1580,21 @@ components:
1568
1580
  type: string
1569
1581
  example: '2016-12-09T14:56:36.730Z'
1570
1582
  data:
1571
- $ref: '#/components/schemas/featureToggleSchema'
1572
- diffs:
1573
- description: |-
1574
- The JSON differences between the current and last version of the Feature Toggle.
1575
- (Uses the [deep-diff Node.js module](https://www.npmjs.com/package/deep-diff))
1576
- externalDocs:
1577
- description: Activation strategies
1578
- url: 'https://www.npmjs.com/package/deep-diff#differences'
1579
- type: array
1580
- items:
1581
- required:
1582
- - kind
1583
- - lhs
1584
- - rhs
1585
- properties:
1586
- kind:
1587
- description: |-
1588
- The kind of change:
1589
- - **N** - a newly-added property or element
1590
- - **D** - a property or element was deleted
1591
- - **E** - a property or element was edited
1592
- - **A** - a change occurred within an array
1593
- type: string
1594
- enum:
1595
- - 'N'
1596
- - D
1597
- - E
1598
- - A
1599
- example: E
1600
- path:
1601
- type: array
1602
- items:
1603
- required:
1604
- - pathItem
1605
- properties:
1606
- pathItem:
1607
- description: The property path (from the left-hand-side root)
1608
- type: string
1609
- example: enabled
1610
- lhs:
1611
- description: The value on the left-hand-side of the comparison (*undefined* if **kind** is *N*)
1612
- type: boolean
1613
- example: true
1614
- rhs:
1615
- description: The value on the right-hand-side of the comparison (*undefined* if **kind** is *D*)
1616
- type: boolean
1617
- example: false
1583
+ description: The current state of the updated resource
1584
+ type: object
1585
+ preData:
1586
+ description: The previous state of the updated resource
1587
+ type: object
1588
+ featureName:
1589
+ description: Name of the feature toggle (if event related to a feature toggle)
1590
+ type: string
1591
+ project:
1592
+ description: Name of the project (if event related to a project resource)
1593
+ type: string
1594
+ environment:
1595
+ description: Name of the environment (if event related to a environment resource)
1596
+ type: string
1597
+
1618
1598
  x-tags:
1619
1599
  - Responses
1620
1600
  200export:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unleash-server",
3
3
  "description": "Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.",
4
- "version": "4.2.2",
4
+ "version": "4.3.0-beta.3",
5
5
  "keywords": [
6
6
  "unleash",
7
7
  "feature toggle",
@@ -82,10 +82,9 @@
82
82
  "cookie-session": "^2.0.0-rc.1",
83
83
  "cors": "^2.8.5",
84
84
  "date-fns": "^2.25.0",
85
- "db-migrate": "0.11.12",
85
+ "db-migrate": "0.11.13",
86
86
  "db-migrate-pg": "1.2.2",
87
87
  "db-migrate-shared": "1.2.0",
88
- "deep-diff": "^1.0.2",
89
88
  "deepmerge": "^4.2.2",
90
89
  "errorhandler": "^1.5.1",
91
90
  "express": "^4.17.1",
@@ -95,7 +94,7 @@
95
94
  "helmet": "^4.1.0",
96
95
  "joi": "^17.3.0",
97
96
  "js-yaml": "^4.1.0",
98
- "knex": "0.95.13",
97
+ "knex": "0.95.14",
99
98
  "log4js": "^6.0.0",
100
99
  "memoizee": "^0.4.15",
101
100
  "mime": "^2.4.2",
@@ -112,7 +111,7 @@
112
111
  "response-time": "^2.3.2",
113
112
  "serve-favicon": "^2.5.0",
114
113
  "stoppable": "^1.1.0",
115
- "unleash-frontend": "4.2.12",
114
+ "unleash-frontend": "4.3.0-beta.3",
116
115
  "uuid": "^8.3.2"
117
116
  },
118
117
  "devDependencies": {
@@ -120,8 +119,8 @@
120
119
  "@types/express": "4.17.13",
121
120
  "@types/express-session": "1.17.4",
122
121
  "@types/faker": "5.5.9",
123
- "@types/jest": "27.0.2",
124
- "@types/js-yaml": "4.0.4",
122
+ "@types/jest": "27.0.3",
123
+ "@types/js-yaml": "4.0.5",
125
124
  "@types/memoizee": "0.4.6",
126
125
  "@types/mime": "2.0.3",
127
126
  "@types/node": "16.6.1",
@@ -130,17 +129,17 @@
130
129
  "@types/owasp-password-strength-test": "1.3.0",
131
130
  "@types/stoppable": "1.1.1",
132
131
  "@types/supertest": "2.0.11",
133
- "@types/uuid": "8.3.1",
134
- "@typescript-eslint/eslint-plugin": "5.3.0",
135
- "@typescript-eslint/parser": "5.3.0",
132
+ "@types/uuid": "8.3.3",
133
+ "@typescript-eslint/eslint-plugin": "5.4.0",
134
+ "@typescript-eslint/parser": "5.4.0",
136
135
  "copyfiles": "2.4.1",
137
136
  "coveralls": "3.1.1",
138
137
  "del-cli": "4.0.1",
139
- "eslint": "8.1.0",
140
- "eslint-config-airbnb-base": "14.2.1",
141
- "eslint-config-airbnb-typescript": "14.0.1",
138
+ "eslint": "8.3.0",
139
+ "eslint-config-airbnb-base": "15.0.0",
140
+ "eslint-config-airbnb-typescript": "16.0.0",
142
141
  "eslint-config-prettier": "8.3.0",
143
- "eslint-plugin-import": "2.25.2",
142
+ "eslint-plugin-import": "2.25.3",
144
143
  "eslint-plugin-prettier": "4.0.0",
145
144
  "faker": "5.5.3",
146
145
  "fetch-mock": "9.11.0",
@@ -148,15 +147,15 @@
148
147
  "jest": "27.3.1",
149
148
  "jest-fetch-mock": "3.0.3",
150
149
  "lint-staged": "11.2.6",
151
- "prettier": "2.4.1",
150
+ "prettier": "2.5.0",
152
151
  "proxyquire": "2.1.3",
153
- "source-map-support": "0.5.20",
152
+ "source-map-support": "0.5.21",
154
153
  "superagent": "6.1.0",
155
154
  "supertest": "6.1.6",
156
155
  "ts-jest": "27.0.7",
157
156
  "ts-node": "10.4.0",
158
157
  "tsc-watch": "4.5.0",
159
- "typescript": "4.4.4"
158
+ "typescript": "4.5.2"
160
159
  },
161
160
  "resolutions": {
162
161
  "db-migrate/rc/minimist": "^1.2.5",
@@ -1 +0,0 @@
1
- export function addDiffs(events?: any[]): void;
@@ -1,117 +0,0 @@
1
- /* eslint-disable no-param-reassign */
2
- 'use strict';
3
- const { diff } = require('deep-diff');
4
- const { STRATEGY_CREATED, STRATEGY_DELETED, STRATEGY_UPDATED, STRATEGY_IMPORT, STRATEGY_DEPRECATED, STRATEGY_REACTIVATED, DROP_STRATEGIES, FEATURE_CREATED, FEATURE_UPDATED, FEATURE_ARCHIVED, FEATURE_REVIVED, FEATURE_IMPORT, FEATURE_TAGGED, FEATURE_UNTAGGED, DROP_FEATURES, CONTEXT_FIELD_CREATED, CONTEXT_FIELD_UPDATED, CONTEXT_FIELD_DELETED, PROJECT_CREATED, PROJECT_UPDATED, PROJECT_DELETED, TAG_CREATED, TAG_DELETED, TAG_TYPE_CREATED, TAG_TYPE_DELETED, APPLICATION_CREATED, FEATURE_STALE_ON, FEATURE_STALE_OFF, USER_CREATED, USER_UPDATED, USER_DELETED, } = require('./types/events');
5
- const strategyTypes = [
6
- STRATEGY_CREATED,
7
- STRATEGY_DELETED,
8
- STRATEGY_UPDATED,
9
- STRATEGY_IMPORT,
10
- STRATEGY_DEPRECATED,
11
- STRATEGY_REACTIVATED,
12
- DROP_STRATEGIES,
13
- ];
14
- const featureTypes = [
15
- FEATURE_CREATED,
16
- FEATURE_UPDATED,
17
- FEATURE_ARCHIVED,
18
- FEATURE_REVIVED,
19
- FEATURE_IMPORT,
20
- FEATURE_TAGGED,
21
- FEATURE_UNTAGGED,
22
- DROP_FEATURES,
23
- FEATURE_STALE_ON,
24
- FEATURE_STALE_OFF,
25
- ];
26
- const contextTypes = [
27
- CONTEXT_FIELD_CREATED,
28
- CONTEXT_FIELD_DELETED,
29
- CONTEXT_FIELD_UPDATED,
30
- ];
31
- const userTypes = [USER_CREATED, USER_UPDATED, USER_DELETED];
32
- const tagTypes = [TAG_CREATED, TAG_DELETED];
33
- const tagTypeTypes = [TAG_TYPE_CREATED, TAG_TYPE_DELETED];
34
- const projectTypes = [PROJECT_CREATED, PROJECT_UPDATED, PROJECT_DELETED];
35
- function baseTypeFor(event) {
36
- if (featureTypes.indexOf(event.type) !== -1) {
37
- return 'features';
38
- }
39
- if (strategyTypes.indexOf(event.type) !== -1) {
40
- return 'strategies';
41
- }
42
- if (contextTypes.indexOf(event.type) !== -1) {
43
- return 'context';
44
- }
45
- if (projectTypes.indexOf(event.type) !== -1) {
46
- return 'project';
47
- }
48
- if (tagTypes.indexOf(event.type) !== -1) {
49
- return 'tag';
50
- }
51
- if (tagTypeTypes.indexOf(event.type) !== -1) {
52
- return 'tag-type';
53
- }
54
- if (userTypes.indexOf(event.type) !== -1) {
55
- return 'user';
56
- }
57
- if (event.type === APPLICATION_CREATED) {
58
- return 'application';
59
- }
60
- return event.type;
61
- }
62
- const uniqueFieldForType = (baseType) => {
63
- if (baseType === 'user') {
64
- return 'id';
65
- }
66
- return 'name';
67
- };
68
- function groupByBaseTypeAndName(events) {
69
- const groups = {};
70
- events.forEach((event) => {
71
- const baseType = baseTypeFor(event);
72
- const uniqueField = uniqueFieldForType(baseType);
73
- groups[baseType] = groups[baseType] || {};
74
- groups[baseType][event.data[uniqueField]] =
75
- groups[baseType][event.data[uniqueField]] || [];
76
- groups[baseType][event.data[uniqueField]].push(event);
77
- });
78
- return groups;
79
- }
80
- function eachConsecutiveEvent(events, callback) {
81
- const groups = groupByBaseTypeAndName(events);
82
- Object.keys(groups).forEach((baseType) => {
83
- const group = groups[baseType];
84
- Object.keys(group).forEach((name) => {
85
- const currentEvents = group[name];
86
- let left;
87
- let right;
88
- let i;
89
- let l;
90
- for (i = 0, l = currentEvents.length; i < l; i++) {
91
- left = currentEvents[i];
92
- right = currentEvents[i + 1];
93
- callback(left, right);
94
- }
95
- });
96
- });
97
- }
98
- const ignoredProps = ['createdAt', 'lastSeenAt', 'id'];
99
- const filterProps = (path, key) => {
100
- return ignoredProps.includes(key);
101
- };
102
- function addDiffs(events = []) {
103
- // TODO: no-param-reassign
104
- eachConsecutiveEvent(events, (left, right) => {
105
- if (right) {
106
- left.diffs = diff(right.data, left.data, filterProps);
107
- left.diffs = left.diffs || [];
108
- }
109
- else {
110
- left.diffs = null;
111
- }
112
- });
113
- }
114
- module.exports = {
115
- addDiffs,
116
- };
117
- //# sourceMappingURL=event-differ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-differ.js","sourceRoot":"","sources":["../../src/lib/event-differ.js"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,YAAY,CAAC;AAEb,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,MAAM,EACF,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,GACf,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE9B,MAAM,aAAa,GAAG;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,eAAe;CAClB,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,iBAAiB;CACpB,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;CACxB,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAE7D,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE5C,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAE1D,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAEzE,SAAS,WAAW,CAAC,KAAK;IACtB,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,UAAU,CAAC;KACrB;IACD,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QAC1C,OAAO,YAAY,CAAC;KACvB;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,SAAS,CAAC;KACpB;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,SAAS,CAAC;KACpB;IACD,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACrC,OAAO,KAAK,CAAC;KAChB;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,UAAU,CAAC;KACrB;IACD,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACtC,OAAO,MAAM,CAAC;KACjB;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;QACpC,OAAO,aAAa,CAAC;KACxB;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,EAAE;IACpC,IAAI,QAAQ,KAAK,MAAM,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAAC,MAAM;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAM,EAAE,QAAQ;IAC1C,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC;YACT,IAAI,KAAK,CAAC;YACV,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBACxB,KAAK,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE7B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC9B,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,SAAS,QAAQ,CAAC,MAAM,GAAG,EAAE;IACzB,0BAA0B;IAC1B,oBAAoB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACjC;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACb,QAAQ;CACX,CAAC"}
@@ -1,142 +0,0 @@
1
- 'use strict';
2
- const eventDiffer = require('./event-differ');
3
- const { FEATURE_CREATED, FEATURE_UPDATED } = require('./types/events');
4
- test('should not fail if events include an unknown event type', () => {
5
- const events = [
6
- { type: FEATURE_CREATED, data: {} },
7
- { type: 'unknown-type', data: {} },
8
- ];
9
- eventDiffer.addDiffs(events);
10
- expect(true).toBe(true);
11
- });
12
- test('diffs a feature-update event', () => {
13
- const feature = 'foo';
14
- const desc = 'bar';
15
- const events = [
16
- {
17
- type: FEATURE_UPDATED,
18
- data: {
19
- name: feature,
20
- description: desc,
21
- strategy: 'default',
22
- enabled: true,
23
- parameters: { value: 2 },
24
- },
25
- },
26
- {
27
- type: FEATURE_CREATED,
28
- data: {
29
- name: feature,
30
- description: desc,
31
- strategy: 'default',
32
- enabled: false,
33
- parameters: { value: 1 },
34
- },
35
- },
36
- ];
37
- eventDiffer.addDiffs(events);
38
- const { diffs } = events[0];
39
- expect(diffs[0].kind === 'E').toBe(true);
40
- expect(diffs[0].path[0] === 'enabled').toBe(true);
41
- expect(diffs[0].kind === 'E').toBe(true);
42
- expect(diffs[0].lhs === false).toBe(true);
43
- expect(diffs[0].rhs).toBe(true);
44
- expect(diffs[1].kind === 'E').toBe(true);
45
- expect(diffs[1].path[0] === 'parameters').toBe(true);
46
- expect(diffs[1].path[1] === 'value').toBe(true);
47
- expect(diffs[1].kind === 'E').toBe(true);
48
- expect(diffs[1].lhs === 1).toBe(true);
49
- expect(events[1].diffs === null).toBe(true);
50
- });
51
- test('diffs only against features with the same name', () => {
52
- const events = [
53
- {
54
- type: FEATURE_UPDATED,
55
- data: {
56
- name: 'bar',
57
- description: 'desc',
58
- strategy: 'default',
59
- enabled: true,
60
- parameters: {},
61
- },
62
- },
63
- {
64
- type: FEATURE_UPDATED,
65
- data: {
66
- name: 'foo',
67
- description: 'desc',
68
- strategy: 'default',
69
- enabled: false,
70
- parameters: {},
71
- },
72
- },
73
- {
74
- type: FEATURE_CREATED,
75
- data: {
76
- name: 'bar',
77
- description: 'desc',
78
- strategy: 'default',
79
- enabled: false,
80
- parameters: {},
81
- },
82
- },
83
- {
84
- type: FEATURE_CREATED,
85
- data: {
86
- name: 'foo',
87
- description: 'desc',
88
- strategy: 'default',
89
- enabled: true,
90
- parameters: {},
91
- },
92
- },
93
- ];
94
- eventDiffer.addDiffs(events);
95
- expect(events[0].diffs[0].rhs === true).toBe(true);
96
- expect(events[1].diffs[0].rhs === false).toBe(true);
97
- expect(events[2].diffs === null).toBe(true);
98
- expect(events[3].diffs === null).toBe(true);
99
- });
100
- test('sets an empty array of diffs if nothing was changed', () => {
101
- const events = [
102
- {
103
- type: FEATURE_UPDATED,
104
- data: {
105
- name: 'foo',
106
- description: 'desc',
107
- strategy: 'default',
108
- enabled: true,
109
- parameters: {},
110
- },
111
- },
112
- {
113
- type: FEATURE_CREATED,
114
- data: {
115
- name: 'foo',
116
- description: 'desc',
117
- strategy: 'default',
118
- enabled: true,
119
- parameters: {},
120
- },
121
- },
122
- ];
123
- eventDiffer.addDiffs(events);
124
- expect(events[0].diffs).toEqual([]);
125
- });
126
- test('sets diffs to null if there was nothing to diff against', () => {
127
- const events = [
128
- {
129
- type: FEATURE_UPDATED,
130
- data: {
131
- name: 'foo',
132
- description: 'desc',
133
- strategy: 'default',
134
- enabled: true,
135
- parameters: {},
136
- },
137
- },
138
- ];
139
- eventDiffer.addDiffs(events);
140
- expect(events[0].diffs === null).toBe(true);
141
- });
142
- //# sourceMappingURL=event-differ.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-differ.test.js","sourceRoot":"","sources":["../../src/lib/event-differ.test.js"],"names":[],"mappings":"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"}