unleash-server 4.14.2 → 4.14.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 (256) hide show
  1. package/dist/lib/db/event-store.d.ts +2 -3
  2. package/dist/lib/db/event-store.js +26 -36
  3. package/dist/lib/db/event-store.js.map +1 -1
  4. package/dist/lib/db/event-store.test.js +1 -1
  5. package/dist/lib/db/event-store.test.js.map +1 -1
  6. package/dist/lib/db/feature-strategy-store.js +3 -3
  7. package/dist/lib/db/feature-strategy-store.js.map +1 -1
  8. package/dist/lib/db/feature-toggle-client-store.d.ts +1 -1
  9. package/dist/lib/db/feature-toggle-client-store.js +6 -6
  10. package/dist/lib/db/feature-toggle-client-store.js.map +1 -1
  11. package/dist/lib/db/group-store.d.ts +0 -1
  12. package/dist/lib/db/group-store.js +1 -14
  13. package/dist/lib/db/group-store.js.map +1 -1
  14. package/dist/lib/db/user-store.js +8 -1
  15. package/dist/lib/db/user-store.js.map +1 -1
  16. package/dist/lib/openapi/index.d.ts +2388 -952
  17. package/dist/lib/openapi/index.js +8 -4
  18. package/dist/lib/openapi/index.js.map +1 -1
  19. package/dist/lib/openapi/spec/client-feature-schema.d.ts +72 -7
  20. package/dist/lib/openapi/spec/client-feature-schema.js +5 -3
  21. package/dist/lib/openapi/spec/client-feature-schema.js.map +1 -1
  22. package/dist/lib/openapi/spec/client-features-schema.d.ts +138 -16
  23. package/dist/lib/openapi/spec/client-features-schema.js +2 -2
  24. package/dist/lib/openapi/spec/client-features-schema.js.map +1 -1
  25. package/dist/lib/openapi/spec/client-features-schema.test.js +10 -0
  26. package/dist/lib/openapi/spec/client-features-schema.test.js.map +1 -1
  27. package/dist/lib/openapi/spec/constraint-schema.d.ts +51 -2
  28. package/dist/lib/openapi/spec/constraint-schema.js +17 -4
  29. package/dist/lib/openapi/spec/constraint-schema.js.map +1 -1
  30. package/dist/lib/openapi/spec/context-field-schema.test.js +5 -1
  31. package/dist/lib/openapi/spec/context-field-schema.test.js.map +1 -1
  32. package/dist/lib/openapi/spec/create-feature-strategy-schema.d.ts +12 -2
  33. package/dist/lib/openapi/spec/feature-environment-schema.d.ts +12 -2
  34. package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
  35. package/dist/lib/openapi/spec/feature-events-schema.js +1 -1
  36. package/dist/lib/openapi/spec/feature-events-schema.js.map +1 -1
  37. package/dist/lib/openapi/spec/feature-schema.d.ts +25 -5
  38. package/dist/lib/openapi/spec/feature-schema.test.js +13 -1
  39. package/dist/lib/openapi/spec/feature-schema.test.js.map +1 -1
  40. package/dist/lib/openapi/spec/feature-strategy-schema.d.ts +12 -2
  41. package/dist/lib/openapi/spec/feature-variants-schema.d.ts +1 -1
  42. package/dist/lib/openapi/spec/features-schema.d.ts +50 -10
  43. package/dist/lib/openapi/spec/group-schema.d.ts +1 -4
  44. package/dist/lib/openapi/spec/group-user-model-schema.d.ts +1 -4
  45. package/dist/lib/openapi/spec/group-user-model-schema.js +1 -4
  46. package/dist/lib/openapi/spec/group-user-model-schema.js.map +1 -1
  47. package/dist/lib/openapi/spec/groups-schema.d.ts +2 -8
  48. package/dist/lib/openapi/spec/groups-schema.test.js +0 -1
  49. package/dist/lib/openapi/spec/groups-schema.test.js.map +1 -1
  50. package/dist/lib/openapi/spec/health-overview-schema.d.ts +50 -10
  51. package/dist/lib/openapi/spec/health-report-schema.d.ts +50 -10
  52. package/dist/lib/openapi/spec/playground-constraint-schema.d.ts +47 -0
  53. package/dist/lib/openapi/spec/playground-constraint-schema.js +18 -0
  54. package/dist/lib/openapi/spec/playground-constraint-schema.js.map +1 -0
  55. package/dist/lib/openapi/spec/playground-feature-schema.d.ts +388 -2
  56. package/dist/lib/openapi/spec/playground-feature-schema.js +95 -9
  57. package/dist/lib/openapi/spec/playground-feature-schema.js.map +1 -1
  58. package/dist/lib/openapi/spec/playground-feature-schema.test.js +64 -3
  59. package/dist/lib/openapi/spec/playground-feature-schema.test.js.map +1 -1
  60. package/dist/lib/openapi/spec/playground-request-schema.d.ts +2 -0
  61. package/dist/lib/openapi/spec/playground-request-schema.js +6 -1
  62. package/dist/lib/openapi/spec/playground-request-schema.js.map +1 -1
  63. package/dist/lib/openapi/spec/playground-response-schema.d.ts +774 -3
  64. package/dist/lib/openapi/spec/playground-response-schema.js +15 -1
  65. package/dist/lib/openapi/spec/playground-response-schema.js.map +1 -1
  66. package/dist/lib/openapi/spec/playground-segment-schema.d.ts +79 -0
  67. package/dist/lib/openapi/spec/playground-segment-schema.js +36 -0
  68. package/dist/lib/openapi/spec/playground-segment-schema.js.map +1 -0
  69. package/dist/lib/openapi/spec/playground-strategy-schema.d.ts +257 -0
  70. package/dist/lib/openapi/spec/playground-strategy-schema.js +102 -0
  71. package/dist/lib/openapi/spec/playground-strategy-schema.js.map +1 -0
  72. package/dist/lib/openapi/spec/{bootstrap-ui-schema.test.d.ts → project-schema.test.d.ts} +0 -0
  73. package/dist/lib/openapi/spec/project-schema.test.js +17 -0
  74. package/dist/lib/openapi/spec/project-schema.test.js.map +1 -0
  75. package/dist/lib/openapi/spec/search-events-schema.d.ts +37 -0
  76. package/dist/lib/openapi/spec/search-events-schema.js +47 -0
  77. package/dist/lib/openapi/spec/search-events-schema.js.map +1 -0
  78. package/dist/lib/openapi/spec/segment-schema.d.ts +12 -2
  79. package/dist/lib/openapi/spec/state-schema.d.ts +61 -11
  80. package/dist/lib/{routes/admin-api/bootstrap-ui.test.d.ts → openapi/spec/tag-types-schema.test.d.ts} +0 -0
  81. package/dist/lib/openapi/spec/tag-types-schema.test.js +23 -0
  82. package/dist/lib/openapi/spec/tag-types-schema.test.js.map +1 -0
  83. package/dist/lib/openapi/spec/ui-config-schema.d.ts +3 -0
  84. package/dist/lib/openapi/spec/ui-config-schema.js +3 -0
  85. package/dist/lib/openapi/spec/ui-config-schema.js.map +1 -1
  86. package/dist/lib/openapi/spec/update-feature-schema.d.ts +12 -2
  87. package/dist/lib/openapi/spec/update-feature-strategy-schema.d.ts +12 -2
  88. package/dist/{test/e2e/api/admin/bootstrap.test.d.ts → lib/openapi/spec/user-schema.test.d.ts} +0 -0
  89. package/dist/lib/openapi/spec/user-schema.test.js +17 -0
  90. package/dist/lib/openapi/spec/user-schema.test.js.map +1 -0
  91. package/dist/lib/openapi/spec/users-groups-base-schema.d.ts +2 -8
  92. package/dist/lib/openapi/spec/variant-schema.d.ts +1 -1
  93. package/dist/lib/openapi/spec/variant-schema.js +1 -1
  94. package/dist/lib/openapi/spec/variant-schema.js.map +1 -1
  95. package/dist/lib/openapi/spec/variants-schema.d.ts +1 -1
  96. package/dist/lib/openapi/util/standard-responses.d.ts +6 -0
  97. package/dist/lib/openapi/util/standard-responses.js +10 -2
  98. package/dist/lib/openapi/util/standard-responses.js.map +1 -1
  99. package/dist/lib/routes/admin-api/config.d.ts +2 -1
  100. package/dist/lib/routes/admin-api/config.js +3 -1
  101. package/dist/lib/routes/admin-api/config.js.map +1 -1
  102. package/dist/lib/routes/admin-api/event.d.ts +3 -1
  103. package/dist/lib/routes/admin-api/event.js +30 -7
  104. package/dist/lib/routes/admin-api/event.js.map +1 -1
  105. package/dist/lib/routes/admin-api/index.js +0 -2
  106. package/dist/lib/routes/admin-api/index.js.map +1 -1
  107. package/dist/lib/routes/admin-api/playground.js.map +1 -1
  108. package/dist/lib/services/event-service.d.ts +2 -2
  109. package/dist/lib/services/event-service.js +2 -5
  110. package/dist/lib/services/event-service.js.map +1 -1
  111. package/dist/lib/services/feature-toggle-service.d.ts +1 -1
  112. package/dist/lib/services/feature-toggle-service.js +2 -2
  113. package/dist/lib/services/feature-toggle-service.js.map +1 -1
  114. package/dist/lib/services/group-service.d.ts +1 -1
  115. package/dist/lib/services/group-service.js +1 -5
  116. package/dist/lib/services/group-service.js.map +1 -1
  117. package/dist/lib/services/index.js +1 -0
  118. package/dist/lib/services/index.js.map +1 -1
  119. package/dist/lib/services/openapi-service.js +1 -1
  120. package/dist/lib/services/openapi-service.js.map +1 -1
  121. package/dist/lib/services/playground-service.d.ts +2 -1
  122. package/dist/lib/services/playground-service.js +30 -11
  123. package/dist/lib/services/playground-service.js.map +1 -1
  124. package/dist/lib/types/group.d.ts +1 -2
  125. package/dist/lib/types/group.js.map +1 -1
  126. package/dist/lib/types/stores/event-store.d.ts +2 -3
  127. package/dist/lib/types/stores/feature-toggle-client-store.d.ts +1 -1
  128. package/dist/lib/types/stores/group-store.d.ts +0 -1
  129. package/dist/lib/util/feature-evaluator/client.d.ts +25 -0
  130. package/dist/lib/util/feature-evaluator/client.js +135 -0
  131. package/dist/lib/util/feature-evaluator/client.js.map +1 -0
  132. package/dist/lib/util/feature-evaluator/constraint.d.ts +28 -0
  133. package/dist/lib/util/feature-evaluator/constraint.js +129 -0
  134. package/dist/lib/util/feature-evaluator/constraint.js.map +1 -0
  135. package/dist/lib/util/feature-evaluator/context.d.ts +13 -0
  136. package/dist/lib/util/feature-evaluator/context.js +3 -0
  137. package/dist/lib/util/feature-evaluator/context.js.map +1 -0
  138. package/dist/lib/util/feature-evaluator/feature-evaluator.d.ts +36 -0
  139. package/dist/lib/util/feature-evaluator/feature-evaluator.js +55 -0
  140. package/dist/lib/util/feature-evaluator/feature-evaluator.js.map +1 -0
  141. package/dist/lib/util/feature-evaluator/feature.d.ts +19 -0
  142. package/dist/lib/util/feature-evaluator/feature.js +3 -0
  143. package/dist/lib/util/feature-evaluator/feature.js.map +1 -0
  144. package/dist/lib/util/feature-evaluator/helpers.d.ts +6 -0
  145. package/dist/lib/util/feature-evaluator/helpers.js +32 -0
  146. package/dist/lib/util/feature-evaluator/helpers.js.map +1 -0
  147. package/dist/lib/util/feature-evaluator/index.d.ts +8 -0
  148. package/dist/lib/util/feature-evaluator/index.js +14 -0
  149. package/dist/lib/util/feature-evaluator/index.js.map +1 -0
  150. package/dist/lib/util/feature-evaluator/repository/bootstrap-provider.d.ts +16 -0
  151. package/dist/lib/util/feature-evaluator/repository/bootstrap-provider.js +25 -0
  152. package/dist/lib/util/feature-evaluator/repository/bootstrap-provider.js.map +1 -0
  153. package/dist/lib/util/feature-evaluator/repository/index.d.ts +35 -0
  154. package/dist/lib/util/feature-evaluator/repository/index.js +63 -0
  155. package/dist/lib/util/feature-evaluator/repository/index.js.map +1 -0
  156. package/dist/lib/util/feature-evaluator/repository/storage-provider-in-mem.d.ts +6 -0
  157. package/dist/lib/util/feature-evaluator/repository/storage-provider-in-mem.js +16 -0
  158. package/dist/lib/util/feature-evaluator/repository/storage-provider-in-mem.js.map +1 -0
  159. package/dist/lib/util/feature-evaluator/repository/storage-provider.d.ts +14 -0
  160. package/dist/lib/util/feature-evaluator/repository/storage-provider.js +50 -0
  161. package/dist/lib/util/feature-evaluator/repository/storage-provider.js.map +1 -0
  162. package/dist/lib/util/feature-evaluator/strategy/application-hostname-strategy.d.ts +8 -0
  163. package/dist/lib/util/feature-evaluator/strategy/application-hostname-strategy.js +23 -0
  164. package/dist/lib/util/feature-evaluator/strategy/application-hostname-strategy.js.map +1 -0
  165. package/dist/lib/util/feature-evaluator/strategy/default-strategy.d.ts +5 -0
  166. package/dist/lib/util/feature-evaluator/strategy/default-strategy.js +13 -0
  167. package/dist/lib/util/feature-evaluator/strategy/default-strategy.js.map +1 -0
  168. package/dist/lib/util/feature-evaluator/strategy/flexible-rollout-strategy.d.ts +12 -0
  169. package/dist/lib/util/feature-evaluator/strategy/flexible-rollout-strategy.js +49 -0
  170. package/dist/lib/util/feature-evaluator/strategy/flexible-rollout-strategy.js.map +1 -0
  171. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-random.d.ts +9 -0
  172. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-random.js +19 -0
  173. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-random.js.map +1 -0
  174. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-session-id.d.ts +9 -0
  175. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-session-id.js +24 -0
  176. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-session-id.js.map +1 -0
  177. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-user-id.d.ts +9 -0
  178. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-user-id.js +24 -0
  179. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-user-id.js.map +1 -0
  180. package/dist/lib/util/feature-evaluator/strategy/index.d.ts +4 -0
  181. package/dist/lib/util/feature-evaluator/strategy/index.js +29 -0
  182. package/dist/lib/util/feature-evaluator/strategy/index.js.map +1 -0
  183. package/dist/lib/util/feature-evaluator/strategy/remote-address-strategy.d.ts +8 -0
  184. package/dist/lib/util/feature-evaluator/strategy/remote-address-strategy.js +35 -0
  185. package/dist/lib/util/feature-evaluator/strategy/remote-address-strategy.js.map +1 -0
  186. package/dist/lib/util/feature-evaluator/strategy/strategy.d.ts +41 -0
  187. package/dist/lib/util/feature-evaluator/strategy/strategy.js +75 -0
  188. package/dist/lib/util/feature-evaluator/strategy/strategy.js.map +1 -0
  189. package/dist/lib/util/feature-evaluator/strategy/unknown-strategy.d.ts +9 -0
  190. package/dist/lib/util/feature-evaluator/strategy/unknown-strategy.js +29 -0
  191. package/dist/lib/util/feature-evaluator/strategy/unknown-strategy.js.map +1 -0
  192. package/dist/lib/util/feature-evaluator/strategy/user-with-id-strategy.d.ts +8 -0
  193. package/dist/lib/util/feature-evaluator/strategy/user-with-id-strategy.js +16 -0
  194. package/dist/lib/util/feature-evaluator/strategy/user-with-id-strategy.js.map +1 -0
  195. package/dist/lib/util/feature-evaluator/strategy/util.d.ts +1 -0
  196. package/dist/lib/util/feature-evaluator/strategy/util.js +31 -0
  197. package/dist/lib/util/feature-evaluator/strategy/util.js.map +1 -0
  198. package/dist/lib/util/feature-evaluator/variant.d.ts +28 -0
  199. package/dist/lib/util/feature-evaluator/variant.js +73 -0
  200. package/dist/lib/util/feature-evaluator/variant.js.map +1 -0
  201. package/dist/lib/util/offline-unleash-client.d.ts +13 -2
  202. package/dist/lib/util/offline-unleash-client.js +20 -20
  203. package/dist/lib/util/offline-unleash-client.js.map +1 -1
  204. package/dist/lib/util/offline-unleash-client.test.d.ts +3 -1
  205. package/dist/lib/util/offline-unleash-client.test.js +349 -139
  206. package/dist/lib/util/offline-unleash-client.test.js.map +1 -1
  207. package/dist/migrations/20220808084524-add-group-permissions.d.ts +2 -0
  208. package/dist/migrations/20220808084524-add-group-permissions.js +12 -0
  209. package/dist/migrations/20220808084524-add-group-permissions.js.map +1 -0
  210. package/dist/migrations/20220808110415-add-projects-foreign-key.d.ts +2 -0
  211. package/dist/migrations/20220808110415-add-projects-foreign-key.js +14 -0
  212. package/dist/migrations/20220808110415-add-projects-foreign-key.js.map +1 -0
  213. package/dist/test/arbitraries.test.d.ts +12 -2
  214. package/dist/test/arbitraries.test.js +67 -9
  215. package/dist/test/arbitraries.test.js.map +1 -1
  216. package/dist/test/e2e/api/admin/config.e2e.test.js +2 -1
  217. package/dist/test/e2e/api/admin/config.e2e.test.js.map +1 -1
  218. package/dist/test/e2e/api/admin/event.e2e.test.js +57 -0
  219. package/dist/test/e2e/api/admin/event.e2e.test.js.map +1 -1
  220. package/dist/test/e2e/api/admin/feature.e2e.test.js +8 -7
  221. package/dist/test/e2e/api/admin/feature.e2e.test.js.map +1 -1
  222. package/dist/test/e2e/api/admin/playground.e2e.test.js +22 -0
  223. package/dist/test/e2e/api/admin/playground.e2e.test.js.map +1 -1
  224. package/dist/test/e2e/services/access-service.e2e.test.js +38 -20
  225. package/dist/test/e2e/services/access-service.e2e.test.js.map +1 -1
  226. package/dist/test/e2e/services/playground-service.test.d.ts +5 -1
  227. package/dist/test/e2e/services/playground-service.test.js +725 -37
  228. package/dist/test/e2e/services/playground-service.test.js.map +1 -1
  229. package/dist/test/e2e/services/project-service.e2e.test.js +12 -4
  230. package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
  231. package/dist/test/e2e/services/setting-service.test.js +9 -3
  232. package/dist/test/e2e/services/setting-service.test.js.map +1 -1
  233. package/dist/test/e2e/stores/event-store.e2e.test.js +6 -2
  234. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  235. package/dist/test/fixtures/fake-event-store.d.ts +1 -3
  236. package/dist/test/fixtures/fake-event-store.js +2 -8
  237. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  238. package/dist/test/fixtures/fake-group-store.d.ts +0 -1
  239. package/dist/test/fixtures/fake-group-store.js +0 -3
  240. package/dist/test/fixtures/fake-group-store.js.map +1 -1
  241. package/package.json +15 -13
  242. package/dist/lib/openapi/spec/bootstrap-ui-schema.d.ts +0 -491
  243. package/dist/lib/openapi/spec/bootstrap-ui-schema.js +0 -94
  244. package/dist/lib/openapi/spec/bootstrap-ui-schema.js.map +0 -1
  245. package/dist/lib/openapi/spec/bootstrap-ui-schema.test.js +0 -145
  246. package/dist/lib/openapi/spec/bootstrap-ui-schema.test.js.map +0 -1
  247. package/dist/lib/openapi/spec/client-variant-schema.d.ts +0 -35
  248. package/dist/lib/openapi/spec/client-variant-schema.js +0 -37
  249. package/dist/lib/openapi/spec/client-variant-schema.js.map +0 -1
  250. package/dist/lib/routes/admin-api/bootstrap-ui.d.ts +0 -25
  251. package/dist/lib/routes/admin-api/bootstrap-ui.js +0 -82
  252. package/dist/lib/routes/admin-api/bootstrap-ui.js.map +0 -1
  253. package/dist/lib/routes/admin-api/bootstrap-ui.test.js +0 -60
  254. package/dist/lib/routes/admin-api/bootstrap-ui.test.js.map +0 -1
  255. package/dist/test/e2e/api/admin/bootstrap.test.js +0 -43
  256. package/dist/test/e2e/api/admin/bootstrap.test.js.map +0 -1
@@ -1,170 +1,380 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.offlineUnleashClientNode = void 0;
3
4
  const offline_unleash_client_1 = require("./offline-unleash-client");
5
+ const unleash_client_1 = require("unleash-client");
6
+ const events_1 = require("events");
7
+ const playground_strategy_schema_1 = require("../openapi/spec/playground-strategy-schema");
8
+ const offlineUnleashClientNode = async ({ features, context, logError, segments, }) => {
9
+ const client = new unleash_client_1.Unleash({
10
+ ...context,
11
+ appName: context.appName,
12
+ disableMetrics: true,
13
+ refreshInterval: 0,
14
+ url: 'not-needed',
15
+ storageProvider: new unleash_client_1.InMemStorageProvider(),
16
+ bootstrap: {
17
+ data: (0, offline_unleash_client_1.mapFeaturesForBootstrap)(features),
18
+ segments: (0, offline_unleash_client_1.mapSegmentsForBootstrap)(segments),
19
+ },
20
+ });
21
+ client.on('error', logError);
22
+ client.start();
23
+ await (0, events_1.once)(client, 'ready');
24
+ return client;
25
+ };
26
+ exports.offlineUnleashClientNode = offlineUnleashClientNode;
4
27
  describe('offline client', () => {
5
28
  it('considers enabled variants with a default strategy to be on', async () => {
6
29
  const name = 'toggle-name';
7
- const client = await (0, offline_unleash_client_1.offlineUnleashClient)([
8
- {
9
- name,
10
- enabled: true,
11
- strategies: [{ name: 'default' }],
12
- variants: [],
13
- type: '',
14
- stale: false,
15
- },
16
- ], { appName: 'other-app', environment: 'default' }, console.log);
17
- expect(client.isEnabled(name)).toBeTruthy();
30
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
31
+ features: [
32
+ {
33
+ name,
34
+ enabled: true,
35
+ strategies: [{ name: 'default' }],
36
+ variants: [],
37
+ type: '',
38
+ stale: false,
39
+ },
40
+ ],
41
+ context: { appName: 'other-app', environment: 'default' },
42
+ logError: console.log,
43
+ });
44
+ expect(client.isEnabled(name).result).toBeTruthy();
18
45
  });
19
46
  it('constrains on appName', async () => {
20
47
  const enabledFeature = 'toggle-name';
21
48
  const disabledFeature = 'other-toggle';
22
49
  const appName = 'app-name';
23
- const client = await (0, offline_unleash_client_1.offlineUnleashClient)([
24
- {
25
- name: enabledFeature,
26
- enabled: true,
27
- strategies: [
28
- {
29
- name: 'default',
30
- constraints: [
31
- {
32
- contextName: 'appName',
33
- operator: 'IN',
34
- values: [appName],
35
- },
36
- ],
37
- },
38
- ],
39
- variants: [],
40
- type: '',
41
- stale: false,
42
- },
43
- {
44
- name: disabledFeature,
45
- enabled: true,
46
- strategies: [
47
- {
48
- name: 'default',
49
- constraints: [
50
- {
51
- contextName: 'appName',
52
- operator: 'IN',
53
- values: ['otherApp'],
54
- },
55
- ],
56
- },
57
- ],
58
- variants: [],
59
- type: '',
60
- stale: false,
61
- },
62
- ], { appName, environment: 'default' }, console.log);
63
- expect(client.isEnabled(enabledFeature)).toBeTruthy();
64
- expect(client.isEnabled(disabledFeature)).toBeFalsy();
50
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
51
+ features: [
52
+ {
53
+ name: enabledFeature,
54
+ enabled: true,
55
+ strategies: [
56
+ {
57
+ name: 'default',
58
+ constraints: [
59
+ {
60
+ contextName: 'appName',
61
+ operator: 'IN',
62
+ values: [appName],
63
+ },
64
+ ],
65
+ },
66
+ ],
67
+ variants: [],
68
+ type: '',
69
+ stale: false,
70
+ },
71
+ {
72
+ name: disabledFeature,
73
+ enabled: true,
74
+ strategies: [
75
+ {
76
+ name: 'default',
77
+ constraints: [
78
+ {
79
+ contextName: 'appName',
80
+ operator: 'IN',
81
+ values: ['otherApp'],
82
+ },
83
+ ],
84
+ },
85
+ ],
86
+ variants: [],
87
+ type: '',
88
+ stale: false,
89
+ },
90
+ ],
91
+ context: { appName, environment: 'default' },
92
+ logError: console.log,
93
+ });
94
+ expect(client.isEnabled(enabledFeature).result).toBeTruthy();
95
+ expect(client.isEnabled(disabledFeature).result).toBeFalsy();
65
96
  });
66
- it('considers disabled variants with a default strategy to be off', async () => {
97
+ it('considers disabled features with a default strategy to be enabled', async () => {
67
98
  const name = 'toggle-name';
68
- const client = await (0, offline_unleash_client_1.offlineUnleashClient)([
69
- {
70
- strategies: [
71
- {
72
- name: 'default',
73
- },
74
- ],
75
- stale: false,
76
- enabled: false,
77
- name,
78
- type: 'experiment',
79
- variants: [],
80
- },
81
- ], { appName: 'client-test' }, console.log);
82
- expect(client.isEnabled(name)).toBeFalsy();
99
+ const context = { appName: 'client-test' };
100
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
101
+ features: [
102
+ {
103
+ strategies: [
104
+ {
105
+ name: 'default',
106
+ },
107
+ ],
108
+ stale: false,
109
+ enabled: false,
110
+ name,
111
+ type: 'experiment',
112
+ variants: [],
113
+ },
114
+ ],
115
+ context,
116
+ logError: console.log,
117
+ });
118
+ const result = client.isEnabled(name, context);
119
+ expect(result.result).toBe(true);
83
120
  });
84
- it('considers disabled variants with a default strategy and variants to be off', async () => {
121
+ it('considers disabled variants with a default strategy and variants to be on', async () => {
85
122
  const name = 'toggle-name';
86
- const client = await (0, offline_unleash_client_1.offlineUnleashClient)([
87
- {
88
- strategies: [
89
- {
90
- name: 'default',
91
- },
92
- ],
93
- stale: false,
94
- enabled: false,
95
- name,
96
- type: 'experiment',
97
- variants: [
98
- {
99
- name: 'a',
100
- weight: 500,
101
- weightType: 'variable',
102
- stickiness: 'default',
103
- overrides: [],
104
- },
105
- {
106
- name: 'b',
107
- weight: 500,
108
- weightType: 'variable',
109
- stickiness: 'default',
110
- overrides: [],
111
- },
112
- ],
113
- },
114
- ], { appName: 'client-test' }, console.log);
115
- expect(client.isEnabled(name)).toBeFalsy();
123
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
124
+ features: [
125
+ {
126
+ strategies: [
127
+ {
128
+ name: 'default',
129
+ },
130
+ ],
131
+ stale: false,
132
+ enabled: false,
133
+ name,
134
+ type: 'experiment',
135
+ variants: [
136
+ {
137
+ name: 'a',
138
+ weight: 500,
139
+ weightType: 'variable',
140
+ stickiness: 'default',
141
+ overrides: [],
142
+ },
143
+ {
144
+ name: 'b',
145
+ weight: 500,
146
+ weightType: 'variable',
147
+ stickiness: 'default',
148
+ overrides: [],
149
+ },
150
+ ],
151
+ },
152
+ ],
153
+ context: { appName: 'client-test' },
154
+ logError: console.log,
155
+ });
156
+ expect(client.isEnabled(name).result).toBe(true);
116
157
  });
117
158
  it("returns variant {name: 'disabled', enabled: false } if the toggle isn't enabled", async () => {
118
159
  const name = 'toggle-name';
119
- const client = await (0, offline_unleash_client_1.offlineUnleashClient)([
120
- {
121
- strategies: [],
122
- stale: false,
123
- enabled: false,
124
- name,
125
- type: 'experiment',
126
- variants: [
127
- {
128
- name: 'a',
129
- weight: 500,
130
- weightType: 'variable',
131
- stickiness: 'default',
132
- overrides: [],
133
- },
134
- {
135
- name: 'b',
136
- weight: 500,
137
- weightType: 'variable',
138
- stickiness: 'default',
139
- overrides: [],
140
- },
141
- ],
142
- },
143
- ], { appName: 'client-test' }, console.log);
144
- expect(client.isEnabled(name)).toBeFalsy();
160
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
161
+ features: [
162
+ {
163
+ strategies: [],
164
+ stale: false,
165
+ enabled: false,
166
+ name,
167
+ type: 'experiment',
168
+ variants: [
169
+ {
170
+ name: 'a',
171
+ weight: 500,
172
+ weightType: 'variable',
173
+ stickiness: 'default',
174
+ overrides: [],
175
+ },
176
+ {
177
+ name: 'b',
178
+ weight: 500,
179
+ weightType: 'variable',
180
+ stickiness: 'default',
181
+ overrides: [],
182
+ },
183
+ ],
184
+ },
185
+ ],
186
+ context: { appName: 'client-test' },
187
+ logError: console.log,
188
+ });
189
+ expect(client.isEnabled(name).result).toBeFalsy();
145
190
  expect(client.getVariant(name).name).toEqual('disabled');
146
191
  expect(client.getVariant(name).enabled).toBeFalsy();
147
192
  });
148
193
  it('returns the disabled variant if there are no variants', async () => {
149
194
  const name = 'toggle-name';
150
- const client = await (0, offline_unleash_client_1.offlineUnleashClient)([
195
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
196
+ features: [
197
+ {
198
+ strategies: [
199
+ {
200
+ name: 'default',
201
+ constraints: [],
202
+ },
203
+ ],
204
+ stale: false,
205
+ enabled: true,
206
+ name,
207
+ type: 'experiment',
208
+ variants: [],
209
+ },
210
+ ],
211
+ context: { appName: 'client-test' },
212
+ logError: console.log,
213
+ });
214
+ expect(client.getVariant(name, {}).name).toEqual('disabled');
215
+ expect(client.getVariant(name, {}).enabled).toBeFalsy();
216
+ expect(client.isEnabled(name, {}).result).toBeTruthy();
217
+ });
218
+ it(`returns '${playground_strategy_schema_1.playgroundStrategyEvaluation.unknownResult}' if it can't evaluate a feature`, async () => {
219
+ const name = 'toggle-name';
220
+ const context = { appName: 'client-test' };
221
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
222
+ features: [
223
+ {
224
+ strategies: [
225
+ {
226
+ name: 'unimplemented-custom-strategy',
227
+ constraints: [],
228
+ },
229
+ ],
230
+ stale: false,
231
+ enabled: true,
232
+ name,
233
+ type: 'experiment',
234
+ variants: [],
235
+ },
236
+ ],
237
+ context,
238
+ logError: console.log,
239
+ });
240
+ const result = client.isEnabled(name, context);
241
+ result.strategies.forEach((strategy) => expect(strategy.result.enabled).toEqual(playground_strategy_schema_1.playgroundStrategyEvaluation.unknownResult));
242
+ expect(result.result).toEqual(playground_strategy_schema_1.playgroundStrategyEvaluation.unknownResult);
243
+ });
244
+ it(`returns '${playground_strategy_schema_1.playgroundStrategyEvaluation.unknownResult}' for the application hostname strategy`, async () => {
245
+ const name = 'toggle-name';
246
+ const context = { appName: 'client-test' };
247
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
248
+ features: [
249
+ {
250
+ strategies: [
251
+ {
252
+ name: 'applicationHostname',
253
+ constraints: [],
254
+ },
255
+ ],
256
+ stale: false,
257
+ enabled: true,
258
+ name,
259
+ type: 'experiment',
260
+ variants: [],
261
+ },
262
+ ],
263
+ context,
264
+ logError: console.log,
265
+ });
266
+ const result = client.isEnabled(name, context);
267
+ result.strategies.forEach((strategy) => expect(strategy.result.enabled).toEqual(playground_strategy_schema_1.playgroundStrategyEvaluation.unknownResult));
268
+ expect(result.result).toEqual(playground_strategy_schema_1.playgroundStrategyEvaluation.unknownResult);
269
+ });
270
+ it('returns strategies in the order they are provided', async () => {
271
+ const featureName = 'featureName';
272
+ const strategies = [
151
273
  {
152
- strategies: [
274
+ name: 'default',
275
+ constraints: [],
276
+ parameters: {},
277
+ },
278
+ {
279
+ name: 'default',
280
+ constraints: [
153
281
  {
154
- name: 'default',
155
- constraints: [],
282
+ values: ['my-app-name'],
283
+ inverted: false,
284
+ operator: 'IN',
285
+ contextName: 'appName',
286
+ caseInsensitive: false,
156
287
  },
157
288
  ],
158
- stale: false,
159
- enabled: true,
160
- name,
161
- type: 'experiment',
162
- variants: [],
289
+ parameters: {},
163
290
  },
164
- ], { appName: 'client-test' }, console.log);
165
- expect(client.getVariant(name, {}).name).toEqual('disabled');
166
- expect(client.getVariant(name, {}).enabled).toBeFalsy();
167
- expect(client.isEnabled(name, {})).toBeTruthy();
291
+ {
292
+ name: 'applicationHostname',
293
+ constraints: [],
294
+ parameters: {
295
+ hostNames: 'myhostname.com',
296
+ },
297
+ },
298
+ {
299
+ name: 'flexibleRollout',
300
+ constraints: [],
301
+ parameters: {
302
+ groupId: 'killer',
303
+ rollout: '34',
304
+ stickiness: 'userId',
305
+ },
306
+ },
307
+ {
308
+ name: 'userWithId',
309
+ constraints: [],
310
+ parameters: {
311
+ userIds: 'uoea,ueoa',
312
+ },
313
+ },
314
+ {
315
+ name: 'remoteAddress',
316
+ constraints: [],
317
+ parameters: {
318
+ IPs: '196.6.6.05',
319
+ },
320
+ },
321
+ ];
322
+ const context = { appName: 'client-test' };
323
+ const client = await (0, offline_unleash_client_1.offlineUnleashClient)({
324
+ features: [
325
+ {
326
+ strategies,
327
+ // impressionData: false,
328
+ enabled: true,
329
+ name: featureName,
330
+ // description: '',
331
+ // project: 'heartman-for-test',
332
+ stale: false,
333
+ type: 'kill-switch',
334
+ variants: [
335
+ {
336
+ name: 'a',
337
+ weight: 334,
338
+ weightType: 'variable',
339
+ stickiness: 'default',
340
+ overrides: [],
341
+ payload: {
342
+ type: 'json',
343
+ value: '{"hello": "world"}',
344
+ },
345
+ },
346
+ {
347
+ name: 'b',
348
+ weight: 333,
349
+ weightType: 'variable',
350
+ stickiness: 'default',
351
+ overrides: [],
352
+ payload: {
353
+ type: 'string',
354
+ value: 'ueoau',
355
+ },
356
+ },
357
+ {
358
+ name: 'c',
359
+ weight: 333,
360
+ weightType: 'variable',
361
+ stickiness: 'default',
362
+ payload: {
363
+ type: 'csv',
364
+ value: '1,2,3',
365
+ },
366
+ overrides: [],
367
+ },
368
+ ],
369
+ },
370
+ ],
371
+ context,
372
+ logError: console.log,
373
+ });
374
+ const evaluatedStrategies = client
375
+ .isEnabled(featureName, context)
376
+ .strategies.map((strategy) => strategy.name);
377
+ expect(evaluatedStrategies).toEqual(strategies.map((strategy) => strategy.name));
168
378
  });
169
379
  });
170
380
  //# sourceMappingURL=offline-unleash-client.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offline-unleash-client.test.js","sourceRoot":"","sources":["../../../src/lib/util/offline-unleash-client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offline-unleash-client.test.js","sourceRoot":"","sources":["../../../src/lib/util/offline-unleash-client.test.ts"],"names":[],"mappings":";;;AAAA,qEAKkC;AAClC,mDAGwB;AACxB,mCAA8B;AAC9B,2FAA0F;AAEnF,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAC3C,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,GACQ,EAA8B,EAAE;IAChD,MAAM,MAAM,GAAG,IAAI,wBAAiB,CAAC;QACjC,GAAG,OAAO;QACV,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,CAAC;QAClB,GAAG,EAAE,YAAY;QACjB,eAAe,EAAE,IAAI,qCAAwB,EAAE;QAC/C,SAAS,EAAE;YACP,IAAI,EAAE,IAAA,gDAAuB,EAAC,QAAQ,CAAC;YACvC,QAAQ,EAAE,IAAA,gDAAuB,EAAC,QAAQ,CAAC;SAC9C;KACJ,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,IAAA,aAAI,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5B,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAzBW,QAAA,wBAAwB,4BAyBnC;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,IAAI;oBACJ,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oBACjC,QAAQ,EAAE,EAAE;oBACZ,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,KAAK;iBACf;aACJ;YACD,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE;YACzD,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,cAAc,GAAG,aAAa,CAAC;QACrC,MAAM,eAAe,GAAG,cAAc,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE;gCACT;oCACI,WAAW,EAAE,SAAS;oCACtB,QAAQ,EAAE,IAAI;oCACd,MAAM,EAAE,CAAC,OAAO,CAAC;iCACpB;6BACJ;yBACJ;qBACJ;oBACD,QAAQ,EAAE,EAAE;oBACZ,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,KAAK;iBACf;gBACD;oBACI,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE;gCACT;oCACI,WAAW,EAAE,SAAS;oCACtB,QAAQ,EAAE,IAAI;oCACd,MAAM,EAAE,CAAC,UAAU,CAAC;iCACvB;6BACJ;yBACJ;qBACJ;oBACD,QAAQ,EAAE,EAAE;oBACZ,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,KAAK;iBACf;aACJ;YACD,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE;YAC5C,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,SAAS;yBAClB;qBACJ;oBACD,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,KAAK;oBACd,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,EAAE;iBACf;aACJ;YACD,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,SAAS;yBAClB;qBACJ;oBACD,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,KAAK;oBACd,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE;wBACN;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,EAAE;yBAChB;wBACD;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,EAAE;yBAChB;qBACJ;iBACJ;aACJ;YACD,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;YACnC,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,KAAK;oBACd,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE;wBACN;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,EAAE;yBAChB;wBACD;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,EAAE;yBAChB;qBACJ;iBACJ;aACJ;YACD,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;YACnC,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,EAAE;yBAClB;qBACJ;oBACD,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,IAAI;oBACb,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,EAAE;iBACf;aACJ;YACD,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;YACnC,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,yDAA4B,CAAC,aAAa,kCAAkC,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,+BAA+B;4BACrC,WAAW,EAAE,EAAE;yBAClB;qBACJ;oBACD,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,IAAI;oBACb,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,EAAE;iBACf;aACJ;YACD,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CACnC,yDAA4B,CAAC,aAAa,CAC7C,CACJ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACzB,yDAA4B,CAAC,aAAa,CAC7C,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,yDAA4B,CAAC,aAAa,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,qBAAqB;4BAC3B,WAAW,EAAE,EAAE;yBAClB;qBACJ;oBACD,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,IAAI;oBACb,IAAI;oBACJ,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,EAAE;iBACf;aACJ;YACD,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CACnC,yDAA4B,CAAC,aAAa,CAC7C,CACJ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACzB,yDAA4B,CAAC,aAAa,CAC7C,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,WAAW,GAAG,aAAa,CAAC;QAClC,MAAM,UAAU,GAAG;YACf;gBACI,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,EAAE;aACjB;YACD;gBACI,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE;oBACT;wBACI,MAAM,EAAE,CAAC,aAAa,CAAC;wBACvB,QAAQ,EAAE,KAAK;wBACf,QAAQ,EAAE,IAAY;wBACtB,WAAW,EAAE,SAAS;wBACtB,eAAe,EAAE,KAAK;qBACzB;iBACJ;gBACD,UAAU,EAAE,EAAE;aACjB;YACD;gBACI,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE;oBACR,SAAS,EAAE,gBAAgB;iBAC9B;aACJ;YACD;gBACI,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE;oBACR,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,QAAQ;iBACvB;aACJ;YACD;gBACI,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE;oBACR,OAAO,EAAE,WAAW;iBACvB;aACJ;YACD;gBACI,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE;oBACR,GAAG,EAAE,YAAY;iBACpB;aACJ;SACJ,CAAC;QAEF,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAoB,EAAC;YACtC,QAAQ,EAAE;gBACN;oBACI,UAAU;oBACV,yBAAyB;oBACzB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,WAAW;oBACjB,mBAAmB;oBACnB,gCAAgC;oBAChC,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE;wBACN;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,EAAE;4BACb,OAAO,EAAE;gCACL,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,oBAAoB;6BAC9B;yBACJ;wBACD;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,EAAE;4BACb,OAAO,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,OAAO;6BACjB;yBACJ;wBACD;4BACI,IAAI,EAAE,GAAG;4BACT,MAAM,EAAE,GAAG;4BACX,UAAU,EAAE,UAAU;4BACtB,UAAU,EAAE,SAAS;4BACrB,OAAO,EAAE;gCACL,IAAI,EAAE,KAAK;gCACX,KAAK,EAAE,OAAO;6BACjB;4BACD,SAAS,EAAE,EAAE;yBAChB;qBACJ;iBACJ;aACJ;YACD,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,MAAM;aAC7B,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;aAC/B,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAC/B,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9C,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,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,12 @@
1
+ 'use strict';
2
+ exports.up = function (db, cb) {
3
+ db.runSql(`
4
+ ALTER TABLE group_user DROP COLUMN IF EXISTS role;
5
+ `, cb);
6
+ };
7
+ exports.down = function (db, cb) {
8
+ db.runSql(`
9
+ ALTER TABLE group_user ADD COLUMN role text check(role in ('Owner', 'Member')) default 'Member';
10
+ `, cb);
11
+ };
12
+ //# sourceMappingURL=20220808084524-add-group-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20220808084524-add-group-permissions.js","sourceRoot":"","sources":["../../src/migrations/20220808084524-add-group-permissions.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL;;SAEC,EACD,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CACL;;KAEH,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,14 @@
1
+ exports.up = function (db, cb) {
2
+ db.runSql(`
3
+ delete from group_role where project not in (select id from projects);
4
+ ALTER TABLE group_role
5
+ ADD CONSTRAINT fk_group_role_project
6
+ FOREIGN KEY(project)
7
+ REFERENCES projects(id) ON DELETE CASCADE; `, cb);
8
+ };
9
+ exports.down = function (db, cb) {
10
+ db.runSql(`
11
+ ALTER TABLE group_role DROP CONSTRAINT fk_group_role_project;
12
+ `, cb);
13
+ };
14
+ //# sourceMappingURL=20220808110415-add-projects-foreign-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20220808110415-add-projects-foreign-key.js","sourceRoot":"","sources":["../../src/migrations/20220808110415-add-projects-foreign-key.js"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE;IACzB,EAAE,CAAC,MAAM,CACL;;;;;gEAKwD,EACxD,EAAE,CACL,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE;IAC3B,EAAE,CAAC,MAAM,CACL;;CAEP,EACO,EAAE,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -1,10 +1,14 @@
1
- import { Arbitrary } from 'fast-check';
1
+ import fc, { Arbitrary } from 'fast-check';
2
2
  import { ClientFeatureSchema } from '../lib/openapi/spec/client-feature-schema';
3
3
  import { IVariant } from '../lib/types/model';
4
4
  import { FeatureStrategySchema } from '../lib/openapi/spec/feature-strategy-schema';
5
+ import { ConstraintSchema } from 'lib/openapi/spec/constraint-schema';
6
+ import { SegmentSchema } from 'lib/openapi/spec/segment-schema';
5
7
  export declare const urlFriendlyString: () => Arbitrary<string>;
6
8
  export declare const commonISOTimestamp: () => Arbitrary<string>;
7
- export declare const strategy: (name: string, parameters: Arbitrary<Record<string, string>>) => Arbitrary<FeatureStrategySchema>;
9
+ export declare const strategyConstraint: () => Arbitrary<ConstraintSchema>;
10
+ export declare const strategy: (name: string, parameters?: Arbitrary<Record<string, string>>) => Arbitrary<FeatureStrategySchema>;
11
+ export declare const segment: () => Arbitrary<SegmentSchema>;
8
12
  export declare const strategies: () => Arbitrary<FeatureStrategySchema[]>;
9
13
  export declare const variant: () => Arbitrary<IVariant>;
10
14
  export declare const variants: () => Arbitrary<IVariant[]>;
@@ -12,3 +16,9 @@ export declare const clientFeature: (name?: string) => Arbitrary<ClientFeatureSc
12
16
  export declare const clientFeatures: (constraints?: {
13
17
  minLength?: number;
14
18
  }) => Arbitrary<ClientFeatureSchema[]>;
19
+ export declare const clientFeaturesAndSegments: (featureConstraints?: {
20
+ minLength?: number;
21
+ }) => fc.Arbitrary<{
22
+ features: ClientFeatureSchema[];
23
+ segments: SegmentSchema[];
24
+ }>;