@splitsoftware/splitio-commons 1.9.2-rc.1 → 1.9.2

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 (144) hide show
  1. package/CHANGES.txt +4 -0
  2. package/cjs/evaluator/index.js +1 -18
  3. package/cjs/logger/constants.js +2 -7
  4. package/cjs/logger/messages/error.js +0 -2
  5. package/cjs/logger/messages/info.js +1 -1
  6. package/cjs/logger/messages/warn.js +1 -4
  7. package/cjs/sdkClient/client.js +0 -33
  8. package/cjs/sdkClient/clientAttributesDecoration.js +0 -20
  9. package/cjs/sdkClient/clientCS.js +4 -5
  10. package/cjs/sdkClient/clientInputValidation.js +3 -52
  11. package/cjs/sdkClient/sdkClientMethodCS.js +2 -2
  12. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +1 -1
  13. package/cjs/sdkManager/index.js +1 -2
  14. package/cjs/services/splitApi.js +1 -7
  15. package/cjs/storages/KeyBuilder.js +0 -3
  16. package/cjs/storages/KeyBuilderSS.js +0 -4
  17. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +27 -63
  18. package/cjs/storages/inLocalStorage/index.js +2 -2
  19. package/cjs/storages/inMemory/InMemoryStorage.js +2 -2
  20. package/cjs/storages/inMemory/InMemoryStorageCS.js +3 -3
  21. package/cjs/storages/inMemory/SplitsCacheInMemory.js +2 -47
  22. package/cjs/storages/inRedis/SplitsCacheInRedis.js +0 -11
  23. package/cjs/storages/pluggable/SplitsCachePluggable.js +0 -11
  24. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  25. package/cjs/sync/polling/updaters/splitChangesUpdater.js +4 -24
  26. package/cjs/sync/submitters/telemetrySubmitter.js +1 -15
  27. package/cjs/utils/constants/index.js +2 -6
  28. package/cjs/utils/lang/sets.js +1 -9
  29. package/cjs/utils/settingsValidation/index.js +1 -1
  30. package/cjs/utils/settingsValidation/splitFilters.js +2 -72
  31. package/esm/evaluator/index.js +0 -16
  32. package/esm/logger/constants.js +0 -5
  33. package/esm/logger/messages/error.js +0 -2
  34. package/esm/logger/messages/info.js +1 -1
  35. package/esm/logger/messages/warn.js +1 -4
  36. package/esm/sdkClient/client.js +2 -35
  37. package/esm/sdkClient/clientAttributesDecoration.js +0 -20
  38. package/esm/sdkClient/clientCS.js +4 -5
  39. package/esm/sdkClient/clientInputValidation.js +3 -52
  40. package/esm/sdkClient/sdkClientMethodCS.js +2 -2
  41. package/esm/sdkClient/sdkClientMethodCSWithTT.js +1 -1
  42. package/esm/sdkManager/index.js +1 -2
  43. package/esm/services/splitApi.js +1 -7
  44. package/esm/storages/KeyBuilder.js +0 -3
  45. package/esm/storages/KeyBuilderSS.js +0 -4
  46. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +27 -63
  47. package/esm/storages/inLocalStorage/index.js +2 -2
  48. package/esm/storages/inMemory/InMemoryStorage.js +2 -2
  49. package/esm/storages/inMemory/InMemoryStorageCS.js +3 -3
  50. package/esm/storages/inMemory/SplitsCacheInMemory.js +2 -47
  51. package/esm/storages/inRedis/SplitsCacheInRedis.js +0 -11
  52. package/esm/storages/pluggable/SplitsCachePluggable.js +0 -11
  53. package/esm/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  54. package/esm/sync/polling/updaters/splitChangesUpdater.js +4 -24
  55. package/esm/sync/submitters/telemetrySubmitter.js +1 -15
  56. package/esm/utils/constants/index.js +0 -4
  57. package/esm/utils/lang/sets.js +0 -7
  58. package/esm/utils/settingsValidation/index.js +1 -1
  59. package/esm/utils/settingsValidation/splitFilters.js +2 -71
  60. package/package.json +1 -1
  61. package/src/dtos/types.ts +2 -3
  62. package/src/evaluator/index.ts +0 -24
  63. package/src/logger/constants.ts +0 -5
  64. package/src/logger/messages/error.ts +0 -2
  65. package/src/logger/messages/info.ts +1 -1
  66. package/src/logger/messages/warn.ts +1 -4
  67. package/src/sdkClient/client.ts +2 -42
  68. package/src/sdkClient/clientAttributesDecoration.ts +0 -24
  69. package/src/sdkClient/clientCS.ts +4 -5
  70. package/src/sdkClient/clientInputValidation.ts +4 -56
  71. package/src/sdkClient/sdkClientMethodCS.ts +2 -2
  72. package/src/sdkClient/sdkClientMethodCSWithTT.ts +1 -1
  73. package/src/sdkManager/index.ts +1 -2
  74. package/src/services/splitApi.ts +1 -6
  75. package/src/storages/AbstractSegmentsCacheSync.ts +1 -0
  76. package/src/storages/AbstractSplitsCacheAsync.ts +0 -2
  77. package/src/storages/AbstractSplitsCacheSync.ts +0 -3
  78. package/src/storages/KeyBuilder.ts +0 -4
  79. package/src/storages/KeyBuilderSS.ts +0 -4
  80. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +28 -74
  81. package/src/storages/inLocalStorage/index.ts +2 -2
  82. package/src/storages/inMemory/InMemoryStorage.ts +2 -2
  83. package/src/storages/inMemory/InMemoryStorageCS.ts +3 -3
  84. package/src/storages/inMemory/SplitsCacheInMemory.ts +1 -50
  85. package/src/storages/inRedis/SplitsCacheInRedis.ts +0 -12
  86. package/src/storages/pluggable/SplitsCachePluggable.ts +0 -12
  87. package/src/storages/types.ts +3 -7
  88. package/src/sync/polling/syncTasks/splitsSyncTask.ts +0 -1
  89. package/src/sync/polling/updaters/splitChangesUpdater.ts +4 -27
  90. package/src/sync/submitters/telemetrySubmitter.ts +2 -19
  91. package/src/sync/submitters/types.ts +1 -7
  92. package/src/types.ts +1 -118
  93. package/src/utils/constants/index.ts +0 -4
  94. package/src/utils/lang/sets.ts +0 -8
  95. package/src/utils/settingsValidation/index.ts +1 -1
  96. package/src/utils/settingsValidation/splitFilters.ts +2 -77
  97. package/types/dtos/types.d.ts +0 -1
  98. package/types/evaluator/index.d.ts +0 -1
  99. package/types/logger/constants.d.ts +0 -5
  100. package/types/sdkClient/clientAttributesDecoration.d.ts +0 -4
  101. package/types/sdkClient/identity.d.ts +6 -0
  102. package/types/sdkClient/sdkClientMethodCS.d.ts +2 -2
  103. package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +1 -1
  104. package/types/storages/AbstractSegmentsCacheSync.d.ts +1 -0
  105. package/types/storages/AbstractSplitsCacheAsync.d.ts +0 -2
  106. package/types/storages/AbstractSplitsCacheSync.d.ts +0 -2
  107. package/types/storages/KeyBuilder.d.ts +0 -1
  108. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +1 -6
  109. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +1 -9
  110. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +0 -8
  111. package/types/storages/pluggable/SplitsCachePluggable.d.ts +0 -8
  112. package/types/storages/types.d.ts +0 -4
  113. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +3 -3
  114. package/types/sync/submitters/types.d.ts +1 -7
  115. package/types/types.d.ts +1 -118
  116. package/types/utils/constants/index.d.ts +0 -4
  117. package/types/utils/inputValidation/sdkKey.d.ts +7 -0
  118. package/types/utils/lang/sets.d.ts +0 -1
  119. package/types/utils/settingsValidation/splitFilters.d.ts +0 -1
  120. package/types/myLogger.d.ts +0 -5
  121. package/types/sdkClient/types.d.ts +0 -18
  122. package/types/storages/inMemory/CountsCacheInMemory.d.ts +0 -20
  123. package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +0 -20
  124. package/types/storages/inRedis/CountsCacheInRedis.d.ts +0 -9
  125. package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +0 -9
  126. package/types/storages/metadataBuilder.d.ts +0 -3
  127. package/types/sync/offline/LocalhostFromFile.d.ts +0 -2
  128. package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +0 -2
  129. package/types/sync/offline/updaters/splitChangesUpdater.d.ts +0 -0
  130. package/types/sync/submitters/eventsSyncTask.d.ts +0 -8
  131. package/types/sync/submitters/impressionCountsSubmitterInRedis.d.ts +0 -5
  132. package/types/sync/submitters/impressionCountsSyncTask.d.ts +0 -13
  133. package/types/sync/submitters/impressionsSyncTask.d.ts +0 -14
  134. package/types/sync/submitters/metricsSyncTask.d.ts +0 -12
  135. package/types/sync/submitters/submitterSyncTask.d.ts +0 -10
  136. package/types/sync/submitters/uniqueKeysSubmitterInRedis.d.ts +0 -5
  137. package/types/sync/syncTaskComposite.d.ts +0 -5
  138. package/types/trackers/filter/bloomFilter.d.ts +0 -10
  139. package/types/trackers/filter/dictionaryFilter.d.ts +0 -8
  140. package/types/trackers/filter/types.d.ts +0 -5
  141. package/types/utils/timeTracker/index.d.ts +0 -70
  142. /package/types/storages/inMemory/{uniqueKeysCacheInMemory.d.ts → UniqueKeysCacheInMemory.d.ts} +0 -0
  143. /package/types/storages/inMemory/{uniqueKeysCacheInMemoryCS.d.ts → UniqueKeysCacheInMemoryCS.d.ts} +0 -0
  144. /package/types/storages/inRedis/{uniqueKeysCacheInRedis.d.ts → UniqueKeysCacheInRedis.d.ts} +0 -0
@@ -4,22 +4,18 @@ exports.SplitsCacheInMemory = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var AbstractSplitsCacheSync_1 = require("../AbstractSplitsCacheSync");
6
6
  var lang_1 = require("../../utils/lang");
7
- var sets_1 = require("../../utils/lang/sets");
8
7
  /**
9
8
  * Default ISplitsCacheSync implementation that stores split definitions in memory.
10
9
  * Supported by all JS runtimes.
11
10
  */
12
11
  var SplitsCacheInMemory = /** @class */ (function (_super) {
13
12
  (0, tslib_1.__extends)(SplitsCacheInMemory, _super);
14
- function SplitsCacheInMemory(splitFiltersValidation) {
15
- if (splitFiltersValidation === void 0) { splitFiltersValidation = { queryString: null, groupedFilters: { bySet: [], byName: [], byPrefix: [] }, validFilters: [] }; }
16
- var _this = _super.call(this) || this;
13
+ function SplitsCacheInMemory() {
14
+ var _this = _super !== null && _super.apply(this, arguments) || this;
17
15
  _this.splitsCache = {};
18
16
  _this.ttCache = {};
19
17
  _this.changeNumber = -1;
20
18
  _this.splitsWithSegmentsCount = 0;
21
- _this.flagSetsCache = {};
22
- _this.flagSetsFilter = splitFiltersValidation.groupedFilters.bySet;
23
19
  return _this;
24
20
  }
25
21
  SplitsCacheInMemory.prototype.clear = function () {
@@ -35,7 +31,6 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
35
31
  this.ttCache[previousTtName]--;
36
32
  if (!this.ttCache[previousTtName])
37
33
  delete this.ttCache[previousTtName];
38
- this.removeFromFlagSets(previousSplit.name, previousSplit.sets);
39
34
  if ((0, AbstractSplitsCacheSync_1.usesSegments)(previousSplit)) { // Substract from segments count for the previous version of this Split.
40
35
  this.splitsWithSegmentsCount--;
41
36
  }
@@ -46,7 +41,6 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
46
41
  // Update TT cache
47
42
  var ttName = split.trafficTypeName;
48
43
  this.ttCache[ttName] = (this.ttCache[ttName] || 0) + 1;
49
- this.addToFlagSets(split);
50
44
  // Add to segments count for the new version of the Split
51
45
  if ((0, AbstractSplitsCacheSync_1.usesSegments)(split))
52
46
  this.splitsWithSegmentsCount++;
@@ -65,7 +59,6 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
65
59
  this.ttCache[ttName]--; // Update tt cache
66
60
  if (!this.ttCache[ttName])
67
61
  delete this.ttCache[ttName];
68
- this.removeFromFlagSets(split.name, split.sets);
69
62
  // Update the segments count.
70
63
  if ((0, AbstractSplitsCacheSync_1.usesSegments)(split))
71
64
  this.splitsWithSegmentsCount--;
@@ -94,44 +87,6 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
94
87
  SplitsCacheInMemory.prototype.usesSegments = function () {
95
88
  return this.getChangeNumber() === -1 || this.splitsWithSegmentsCount > 0;
96
89
  };
97
- SplitsCacheInMemory.prototype.getNamesByFlagSets = function (flagSets) {
98
- var _this = this;
99
- var toReturn = new sets_1._Set([]);
100
- flagSets.forEach(function (flagSet) {
101
- var featureFlagNames = _this.flagSetsCache[flagSet];
102
- if (featureFlagNames) {
103
- toReturn = (0, sets_1.returnSetsUnion)(toReturn, featureFlagNames);
104
- }
105
- });
106
- return toReturn;
107
- };
108
- SplitsCacheInMemory.prototype.addToFlagSets = function (featureFlag) {
109
- var _this = this;
110
- if (!featureFlag.sets)
111
- return;
112
- featureFlag.sets.forEach(function (featureFlagSet) {
113
- if (_this.flagSetsFilter.length > 0 && !_this.flagSetsFilter.some(function (filterFlagSet) { return filterFlagSet === featureFlagSet; }))
114
- return;
115
- if (!_this.flagSetsCache[featureFlagSet])
116
- _this.flagSetsCache[featureFlagSet] = new sets_1._Set([]);
117
- _this.flagSetsCache[featureFlagSet].add(featureFlag.name);
118
- });
119
- };
120
- SplitsCacheInMemory.prototype.removeFromFlagSets = function (featureFlagName, flagSets) {
121
- var _this = this;
122
- if (!flagSets)
123
- return;
124
- flagSets.forEach(function (flagSet) {
125
- _this.removeNames(flagSet, featureFlagName);
126
- });
127
- };
128
- SplitsCacheInMemory.prototype.removeNames = function (flagSetName, featureFlagName) {
129
- if (!this.flagSetsCache[flagSetName])
130
- return;
131
- this.flagSetsCache[flagSetName].delete(featureFlagName);
132
- if (this.flagSetsCache[flagSetName].size === 0)
133
- delete this.flagSetsCache[flagSetName];
134
- };
135
90
  return SplitsCacheInMemory;
136
91
  }(AbstractSplitsCacheSync_1.AbstractSplitsCacheSync));
137
92
  exports.SplitsCacheInMemory = SplitsCacheInMemory;
@@ -5,7 +5,6 @@ var tslib_1 = require("tslib");
5
5
  var lang_1 = require("../../utils/lang");
6
6
  var constants_1 = require("./constants");
7
7
  var AbstractSplitsCacheAsync_1 = require("../AbstractSplitsCacheAsync");
8
- var sets_1 = require("../../utils/lang/sets");
9
8
  /**
10
9
  * Discard errors for an answer of multiple operations.
11
10
  */
@@ -172,16 +171,6 @@ var SplitsCacheInRedis = /** @class */ (function (_super) {
172
171
  var _this = this;
173
172
  return this.redis.keys(this.keys.searchPatternForSplitKeys()).then(function (listOfKeys) { return listOfKeys.map(_this.keys.extractKey); });
174
173
  };
175
- /**
176
- * Get list of split names related to a given flag set names list.
177
- * The returned promise is resolved with the list of split names,
178
- * or rejected if wrapper operation fails.
179
- * @todo this is a no-op method to be implemented
180
- */
181
- SplitsCacheInRedis.prototype.getNamesByFlagSets = function () {
182
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
- return new Promise(function (flagSets) { return new sets_1._Set([]); });
184
- };
185
174
  /**
186
175
  * Check traffic type existence.
187
176
  * The returned promise is resolved with a boolean indicating whether the TT exist or not.
@@ -5,7 +5,6 @@ var tslib_1 = require("tslib");
5
5
  var lang_1 = require("../../utils/lang");
6
6
  var constants_1 = require("./constants");
7
7
  var AbstractSplitsCacheAsync_1 = require("../AbstractSplitsCacheAsync");
8
- var sets_1 = require("../../utils/lang/sets");
9
8
  /**
10
9
  * ISplitsCacheAsync implementation for pluggable storages.
11
10
  */
@@ -146,16 +145,6 @@ var SplitsCachePluggable = /** @class */ (function (_super) {
146
145
  var _this = this;
147
146
  return this.wrapper.getKeysByPrefix(this.keys.buildSplitKeyPrefix()).then(function (listOfKeys) { return listOfKeys.map(_this.keys.extractKey); });
148
147
  };
149
- /**
150
- * Get list of split names related to a given flag set names list.
151
- * The returned promise is resolved with the list of split names,
152
- * or rejected if wrapper operation fails.
153
- * @todo this is a no-op method to be implemented
154
- */
155
- SplitsCachePluggable.prototype.getNamesByFlagSets = function () {
156
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
157
- return new Promise(function (flagSets) { return new sets_1._Set([]); });
158
- };
159
148
  /**
160
149
  * Check traffic type existence.
161
150
  * The returned promise is resolved with a boolean indicating whether the TT exist or not.
@@ -8,6 +8,6 @@ var splitChangesUpdater_1 = require("../updaters/splitChangesUpdater");
8
8
  * Creates a sync task that periodically executes a `splitChangesUpdater` task
9
9
  */
10
10
  function splitsSyncTaskFactory(fetchSplitChanges, storage, readiness, settings, isClientSide) {
11
- return (0, syncTask_1.syncTaskFactory)(settings.log, (0, splitChangesUpdater_1.splitChangesUpdaterFactory)(settings.log, (0, splitChangesFetcher_1.splitChangesFetcherFactory)(fetchSplitChanges), storage.splits, storage.segments, settings.sync.__splitFiltersValidation, readiness.splits, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady, isClientSide), settings.scheduler.featuresRefreshRate, 'splitChangesUpdater');
11
+ return (0, syncTask_1.syncTaskFactory)(settings.log, (0, splitChangesUpdater_1.splitChangesUpdaterFactory)(settings.log, (0, splitChangesFetcher_1.splitChangesFetcherFactory)(fetchSplitChanges), storage.splits, storage.segments, readiness.splits, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady, isClientSide), settings.scheduler.featuresRefreshRate, 'splitChangesUpdater');
12
12
  }
13
13
  exports.splitsSyncTaskFactory = splitsSyncTaskFactory;
@@ -5,7 +5,6 @@ var sets_1 = require("../../../utils/lang/sets");
5
5
  var timeout_1 = require("../../../utils/promise/timeout");
6
6
  var constants_1 = require("../../../readiness/constants");
7
7
  var constants_2 = require("../../../logger/constants");
8
- var lang_1 = require("../../../utils/lang");
9
8
  // Checks that all registered segments have been fetched (changeNumber !== -1 for every segment).
10
9
  // Returns a promise that could be rejected.
11
10
  // @TODO review together with Segments and MySegments storage APIs
@@ -33,34 +32,15 @@ function parseSegments(_a) {
33
32
  return segments;
34
33
  }
35
34
  exports.parseSegments = parseSegments;
36
- /**
37
- * If there are defined filters and one feature flag doesn't match with them, its status is changed to 'ARCHIVE' to avoid storing it
38
- * If there are set filter defined, names filter is ignored
39
- *
40
- * @param featureFlag feature flag to be evaluated
41
- * @param filters splitFiltersValidation bySet | byName
42
- */
43
- function matchFilters(featureFlag, filters) {
44
- var _a = filters.groupedFilters, setsFilter = _a.bySet, namesFilter = _a.byName, prefixFilter = _a.byPrefix;
45
- if (setsFilter.length > 0)
46
- return featureFlag.sets && featureFlag.sets.some(function (featureFlagSet) { return setsFilter.indexOf(featureFlagSet) > -1; });
47
- var namesFilterConfigured = namesFilter.length > 0;
48
- var prefixFilterConfigured = prefixFilter.length > 0;
49
- if (!namesFilterConfigured && !prefixFilterConfigured)
50
- return true;
51
- var matchNames = namesFilterConfigured && namesFilter.indexOf(featureFlag.name) > -1;
52
- var matchPrefix = prefixFilterConfigured && prefixFilter.some(function (prefix) { return (0, lang_1.startsWith)(featureFlag.name, prefix); });
53
- return matchNames || matchPrefix;
54
- }
55
35
  /**
56
36
  * Given the list of splits from /splitChanges endpoint, it returns the mutations,
57
37
  * i.e., an object with added splits, removed splits and used segments.
58
38
  * Exported for testing purposes.
59
39
  */
60
- function computeSplitsMutation(entries, filters) {
40
+ function computeSplitsMutation(entries) {
61
41
  var segments = new sets_1._Set();
62
42
  var computed = entries.reduce(function (accum, split) {
63
- if (split.status === 'ACTIVE' && matchFilters(split, filters)) {
43
+ if (split.status === 'ACTIVE') {
64
44
  accum.added.push([split.name, split]);
65
45
  parseSegments(split).forEach(function (segmentName) {
66
46
  segments.add(segmentName);
@@ -89,7 +69,7 @@ exports.computeSplitsMutation = computeSplitsMutation;
89
69
  * @param requestTimeoutBeforeReady How long the updater will wait for the request to timeout. Default 0, i.e., never timeout.
90
70
  * @param retriesOnFailureBeforeReady How many retries on `/splitChanges` we the updater do in case of failure or timeout. Default 0, i.e., no retries.
91
71
  */
92
- function splitChangesUpdaterFactory(log, splitChangesFetcher, splits, segments, splitFiltersValidation, splitsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady, isClientSide) {
72
+ function splitChangesUpdaterFactory(log, splitChangesFetcher, splits, segments, splitsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady, isClientSide) {
93
73
  if (requestTimeoutBeforeReady === void 0) { requestTimeoutBeforeReady = 0; }
94
74
  if (retriesOnFailureBeforeReady === void 0) { retriesOnFailureBeforeReady = 0; }
95
75
  var startingUp = true;
@@ -119,7 +99,7 @@ function splitChangesUpdaterFactory(log, splitChangesFetcher, splits, segments,
119
99
  splitChangesFetcher(since, noCache, till, _promiseDecorator))
120
100
  .then(function (splitChanges) {
121
101
  startingUp = false;
122
- var mutation = computeSplitsMutation(splitChanges.splits, splitFiltersValidation);
102
+ var mutation = computeSplitsMutation(splitChanges.splits);
123
103
  log.debug(constants_2.SYNC_SPLITS_NEW, [mutation.added.length]);
124
104
  log.debug(constants_2.SYNC_SPLITS_REMOVED, [mutation.removed.length]);
125
105
  log.debug(constants_2.SYNC_SPLITS_SEGMENTS, [mutation.segments.length]);
@@ -32,17 +32,6 @@ function getRedundantActiveFactories() {
32
32
  return acum + apiKey_1.usedKeysMap[sdkKey] - 1;
33
33
  }, 0);
34
34
  }
35
- function getTelemetryFlagSetsStats(splitFiltersValidation) {
36
- // Group every configured flag set in an unique array called originalSets
37
- var flagSetsTotal = 0;
38
- splitFiltersValidation.validFilters.forEach(function (filter) {
39
- if (filter.type === 'bySet')
40
- flagSetsTotal += filter.values.length;
41
- });
42
- var flagSetsValid = splitFiltersValidation.groupedFilters.bySet.length;
43
- var flagSetsIgnored = flagSetsTotal - flagSetsValid;
44
- return { flagSetsTotal: flagSetsTotal, flagSetsIgnored: flagSetsIgnored };
45
- }
46
35
  function getTelemetryConfigStats(mode, storageType) {
47
36
  return {
48
37
  oM: OPERATION_MODE_MAP[mode],
@@ -62,7 +51,6 @@ function telemetryCacheConfigAdapter(telemetry, settings) {
62
51
  pop: function () {
63
52
  var urls = settings.urls, scheduler = settings.scheduler;
64
53
  var isClientSide = settings.core.key !== undefined;
65
- var _a = getTelemetryFlagSetsStats(settings.sync.__splitFiltersValidation), flagSetsTotal = _a.flagSetsTotal, flagSetsIgnored = _a.flagSetsIgnored;
66
54
  return (0, objectAssign_1.objectAssign)(getTelemetryConfigStats(settings.mode, settings.storage.type), {
67
55
  sE: settings.streamingEnabled,
68
56
  rR: {
@@ -90,9 +78,7 @@ function telemetryCacheConfigAdapter(telemetry, settings) {
90
78
  nR: telemetry.getNonReadyUsage(),
91
79
  t: telemetry.popTags(),
92
80
  i: settings.integrations && settings.integrations.map(function (int) { return int.type; }),
93
- uC: settings.userConsent ? USER_CONSENT_MAP[settings.userConsent] : 0,
94
- fsT: flagSetsTotal,
95
- fsI: flagSetsIgnored
81
+ uC: settings.userConsent ? USER_CONSENT_MAP[settings.userConsent] : 0
96
82
  });
97
83
  }
98
84
  };
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OCCUPANCY_SEC = exports.OCCUPANCY_PRI = exports.CONNECTION_ESTABLISHED = exports.TRACK = exports.TREATMENTS_WITH_CONFIG_BY_FLAGSETS = exports.TREATMENTS_WITH_CONFIG_BY_FLAGSET = exports.TREATMENTS_BY_FLAGSETS = exports.TREATMENTS_BY_FLAGSET = exports.TREATMENTS_WITH_CONFIG = exports.TREATMENT_WITH_CONFIG = exports.TREATMENTS = exports.TREATMENT = exports.MY_SEGMENT = exports.SEGMENT = exports.TOKEN = exports.TELEMETRY = exports.EVENTS = exports.IMPRESSIONS_COUNT = exports.IMPRESSIONS = exports.SPLITS = exports.NONE_ENUM = exports.DEBUG_ENUM = exports.OPTIMIZED_ENUM = exports.CONSUMER_PARTIAL_ENUM = exports.CONSUMER_ENUM = exports.STANDALONE_ENUM = exports.DEDUPED = exports.DROPPED = exports.QUEUED = exports.CONSENT_UNKNOWN = exports.CONSENT_DECLINED = exports.CONSENT_GRANTED = exports.STORAGE_PLUGGABLE = exports.STORAGE_REDIS = exports.STORAGE_LOCALSTORAGE = exports.STORAGE_MEMORY = exports.CONSUMER_PARTIAL_MODE = exports.CONSUMER_MODE = exports.PRODUCER_MODE = exports.STANDALONE_MODE = exports.LOCALHOST_MODE = exports.NONE = exports.OPTIMIZED = exports.DEBUG = exports.SPLIT_EVENT = exports.SPLIT_IMPRESSION = exports.NA = exports.UNKNOWN = exports.CONTROL_WITH_CONFIG = exports.CONTROL = void 0;
4
- exports.PAUSED = exports.ENABLED = exports.DISABLED = exports.NON_REQUESTED = exports.REQUESTED = exports.POLLING = exports.STREAMING = exports.AUTH_REJECTION = exports.SYNC_MODE_UPDATE = exports.ABLY_ERROR = exports.TOKEN_REFRESH = exports.SSE_CONNECTION_ERROR = exports.STREAMING_STATUS = void 0;
3
+ exports.ABLY_ERROR = exports.TOKEN_REFRESH = exports.SSE_CONNECTION_ERROR = exports.STREAMING_STATUS = exports.OCCUPANCY_SEC = exports.OCCUPANCY_PRI = exports.CONNECTION_ESTABLISHED = exports.TRACK = exports.TREATMENTS_WITH_CONFIG = exports.TREATMENT_WITH_CONFIG = exports.TREATMENTS = exports.TREATMENT = exports.MY_SEGMENT = exports.SEGMENT = exports.TOKEN = exports.TELEMETRY = exports.EVENTS = exports.IMPRESSIONS_COUNT = exports.IMPRESSIONS = exports.SPLITS = exports.NONE_ENUM = exports.DEBUG_ENUM = exports.OPTIMIZED_ENUM = exports.CONSUMER_PARTIAL_ENUM = exports.CONSUMER_ENUM = exports.STANDALONE_ENUM = exports.DEDUPED = exports.DROPPED = exports.QUEUED = exports.CONSENT_UNKNOWN = exports.CONSENT_DECLINED = exports.CONSENT_GRANTED = exports.STORAGE_PLUGGABLE = exports.STORAGE_REDIS = exports.STORAGE_LOCALSTORAGE = exports.STORAGE_MEMORY = exports.CONSUMER_PARTIAL_MODE = exports.CONSUMER_MODE = exports.PRODUCER_MODE = exports.STANDALONE_MODE = exports.LOCALHOST_MODE = exports.NONE = exports.OPTIMIZED = exports.DEBUG = exports.SPLIT_EVENT = exports.SPLIT_IMPRESSION = exports.NA = exports.UNKNOWN = exports.CONTROL_WITH_CONFIG = exports.CONTROL = void 0;
4
+ exports.PAUSED = exports.ENABLED = exports.DISABLED = exports.NON_REQUESTED = exports.REQUESTED = exports.POLLING = exports.STREAMING = exports.AUTH_REJECTION = exports.SYNC_MODE_UPDATE = void 0;
5
5
  // Special treatments
6
6
  exports.CONTROL = 'control';
7
7
  exports.CONTROL_WITH_CONFIG = {
@@ -55,10 +55,6 @@ exports.TREATMENT = 't';
55
55
  exports.TREATMENTS = 'ts';
56
56
  exports.TREATMENT_WITH_CONFIG = 'tc';
57
57
  exports.TREATMENTS_WITH_CONFIG = 'tcs';
58
- exports.TREATMENTS_BY_FLAGSET = 'tf';
59
- exports.TREATMENTS_BY_FLAGSETS = 'tfs';
60
- exports.TREATMENTS_WITH_CONFIG_BY_FLAGSET = 'tcf';
61
- exports.TREATMENTS_WITH_CONFIG_BY_FLAGSETS = 'tcfs';
62
58
  exports.TRACK = 'tr';
63
59
  exports.CONNECTION_ESTABLISHED = 0;
64
60
  exports.OCCUPANCY_PRI = 10;
@@ -24,7 +24,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
24
  THE SOFTWARE.
25
25
  **/
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.returnSetsUnion = exports._Set = exports.__getSetConstructor = exports.setToArray = exports.SetPoly = void 0;
27
+ exports._Set = exports.__getSetConstructor = exports.setToArray = exports.SetPoly = void 0;
28
28
  var SetPoly = /** @class */ (function () {
29
29
  // unlike ES6 `Set`, it only accepts an array as first argument iterable
30
30
  function SetPoly(values) {
@@ -100,11 +100,3 @@ function __getSetConstructor() {
100
100
  }
101
101
  exports.__getSetConstructor = __getSetConstructor;
102
102
  exports._Set = __getSetConstructor();
103
- function returnSetsUnion(set, set2) {
104
- var result = new exports._Set(setToArray(set));
105
- set2.forEach(function (value) {
106
- result.add(value);
107
- });
108
- return result;
109
- }
110
- exports.returnSetsUnion = returnSetsUnion;
@@ -140,7 +140,7 @@ function settingsValidation(config, validationParams) {
140
140
  }
141
141
  else {
142
142
  // Keeping same behaviour than JS SDK: if settings key or TT are invalid,
143
- // `false` value is used as binded key/TT of the default client, which leads to some issues.
143
+ // `false` value is used as bound key/TT of the default client, which leads to some issues.
144
144
  // @ts-ignore, @TODO handle invalid keys as a non-recoverable error?
145
145
  withDefaults.core.key = (0, key_1.validateKey)(log, maybeKey, 'Client instantiation');
146
146
  }
@@ -1,19 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flagSetsAreValid = exports.validateSplitFilters = void 0;
3
+ exports.validateSplitFilters = void 0;
4
4
  var constants_1 = require("../constants");
5
5
  var splits_1 = require("../inputValidation/splits");
6
6
  var constants_2 = require("../../logger/constants");
7
- var objectAssign_1 = require("../lang/objectAssign");
8
- var lang_1 = require("../lang");
9
7
  // Split filters metadata.
10
8
  // Ordered according to their precedency when forming the filter query string: `&names=<values>&prefixes=<values>`
11
9
  var FILTERS_METADATA = [
12
- {
13
- type: 'bySet',
14
- maxLength: 50,
15
- queryParam: 'sets='
16
- },
17
10
  {
18
11
  type: 'byName',
19
12
  maxLength: 400,
@@ -25,8 +18,6 @@ var FILTERS_METADATA = [
25
18
  queryParam: 'prefixes='
26
19
  }
27
20
  ];
28
- var VALID_FLAGSET_REGEX = /^[a-z0-9][_a-z0-9]{0,49}$/;
29
- var CAPITAL_LETTERS_REGEX = /[A-Z]/;
30
21
  /**
31
22
  * Validates that the given value is a valid filter type
32
23
  */
@@ -47,9 +38,6 @@ function validateSplitFilter(log, type, values, maxLength) {
47
38
  // validate and remove invalid and duplicated values
48
39
  var result = (0, splits_1.validateSplits)(log, values, constants_2.LOG_PREFIX_SETTINGS, type + " filter", type + " filter value");
49
40
  if (result) {
50
- if (type === 'bySet') {
51
- result = sanitizeFlagSets(log, result);
52
- }
53
41
  // check max length
54
42
  if (result.length > maxLength)
55
43
  throw new Error(maxLength + " unique values can be specified at most for '" + type + "' filter. You passed " + result.length + ". Please consider reducing the amount or using other filter.");
@@ -80,42 +68,6 @@ function queryStringBuilder(groupedFilters) {
80
68
  });
81
69
  return queryParams.length > 0 ? '&' + queryParams.join('&') : null;
82
70
  }
83
- /**
84
- * Sanitizes set names list taking in account:
85
- * - It should be lowercase
86
- * - Must adhere the following regular expression /^[a-z0-9][_a-z0-9]{0,49}$/ that means
87
- * - must start with a letter or number
88
- * - Be in lowercase
89
- * - Be alphanumeric
90
- * - have a max length of 50 characters
91
- *
92
- * @param {ILogger} log
93
- * @param {string[]} flagSets
94
- * @returns sanitized list of set names
95
- */
96
- function sanitizeFlagSets(log, flagSets) {
97
- var sanitizedSets = flagSets
98
- .map(function (flagSet) {
99
- if (CAPITAL_LETTERS_REGEX.test(flagSet)) {
100
- log.warn(constants_2.WARN_SPLITS_FILTER_LOWERCASE_SET, [flagSet]);
101
- flagSet = flagSet.toLowerCase();
102
- }
103
- return flagSet;
104
- })
105
- .filter(function (flagSet) {
106
- if (!VALID_FLAGSET_REGEX.test(flagSet)) {
107
- log.warn(constants_2.WARN_SPLITS_FILTER_INVALID_SET, [flagSet, VALID_FLAGSET_REGEX, flagSet]);
108
- return false;
109
- }
110
- if (typeof flagSet !== 'string')
111
- return false;
112
- return true;
113
- });
114
- return (0, lang_1.uniq)(sanitizedSets);
115
- }
116
- function configuredFilter(validFilters, filterType) {
117
- return (0, lang_1.find)(validFilters, function (filter) { return filter.type === filterType && filter.values.length > 0; });
118
- }
119
71
  /**
120
72
  * Validates `splitFilters` configuration object and parses it into a query string for filtering splits on `/splitChanges` fetch.
121
73
  *
@@ -134,7 +86,7 @@ function validateSplitFilters(log, maybeSplitFilters, mode) {
134
86
  var res = {
135
87
  validFilters: [],
136
88
  queryString: null,
137
- groupedFilters: { bySet: [], byName: [], byPrefix: [] },
89
+ groupedFilters: { byName: [], byPrefix: [] }
138
90
  };
139
91
  // do nothing if `splitFilters` param is not a non-empty array or mode is not STANDALONE
140
92
  if (!maybeSplitFilters)
@@ -166,31 +118,9 @@ function validateSplitFilters(log, maybeSplitFilters, mode) {
166
118
  if (res.groupedFilters[type].length > 0)
167
119
  res.groupedFilters[type] = validateSplitFilter(log, type, res.groupedFilters[type], maxLength);
168
120
  });
169
- var setFilter = configuredFilter(res.validFilters, 'bySet');
170
- // Clean all filters if set filter is present
171
- if (setFilter) {
172
- if (configuredFilter(res.validFilters, 'byName') || configuredFilter(res.validFilters, 'byPrefix'))
173
- log.error(constants_2.ERROR_SETS_FILTER_EXCLUSIVE);
174
- (0, objectAssign_1.objectAssign)(res.groupedFilters, { byName: [], byPrefix: [] });
175
- }
176
121
  // build query string
177
122
  res.queryString = queryStringBuilder(res.groupedFilters);
178
123
  log.debug(constants_2.SETTINGS_SPLITS_FILTER, [res.queryString]);
179
124
  return res;
180
125
  }
181
126
  exports.validateSplitFilters = validateSplitFilters;
182
- function flagSetsAreValid(log, method, flagSets, flagSetsInConfig) {
183
- var sets = (0, splits_1.validateSplits)(log, flagSets, method, 'flag sets', 'flag set');
184
- var toReturn = sets ? sanitizeFlagSets(log, sets) : [];
185
- if (flagSetsInConfig.length > 0) {
186
- toReturn = toReturn.filter(function (flagSet) {
187
- if (flagSetsInConfig.indexOf(flagSet) > -1) {
188
- return true;
189
- }
190
- log.warn(constants_2.WARN_FLAGSET_NOT_CONFIGURED, [method, flagSet]);
191
- return false;
192
- });
193
- }
194
- return toReturn;
195
- }
196
- exports.flagSetsAreValid = flagSetsAreValid;
@@ -2,7 +2,6 @@ import { Engine } from './Engine';
2
2
  import { thenable } from '../utils/promise/thenable';
3
3
  import * as LabelsConstants from '../utils/labels';
4
4
  import { CONTROL } from '../utils/constants';
5
- import { setToArray } from '../utils/lang/sets';
6
5
  var treatmentException = {
7
6
  treatment: CONTROL,
8
7
  label: LabelsConstants.EXCEPTION,
@@ -50,21 +49,6 @@ export function evaluateFeatures(log, key, splitNames, attributes, storage) {
50
49
  }) :
51
50
  getEvaluations(log, splitNames, parsedSplits, key, attributes, storage);
52
51
  }
53
- export function evaluateFeaturesByFlagSets(log, key, flagSets, attributes, storage) {
54
- var storedFlagNames;
55
- // get features by flag sets
56
- try {
57
- storedFlagNames = storage.splits.getNamesByFlagSets(flagSets);
58
- }
59
- catch (e) {
60
- // return empty evaluations
61
- return {};
62
- }
63
- // evaluate related features
64
- return thenable(storedFlagNames) ?
65
- storedFlagNames.then(function (splitNames) { return evaluateFeatures(log, key, setToArray(splitNames), attributes, storage); }) :
66
- evaluateFeatures(log, key, setToArray(storedFlagNames), attributes, storage);
67
- }
68
52
  function getEvaluation(log, splitJSON, key, attributes, storage) {
69
53
  var evaluation = {
70
54
  treatment: CONTROL,
@@ -95,9 +95,6 @@ export var WARN_SPLITS_FILTER_EMPTY = 221;
95
95
  export var WARN_SDK_KEY = 222;
96
96
  export var STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2 = 223;
97
97
  export var STREAMING_PARSING_SPLIT_UPDATE = 224;
98
- export var WARN_SPLITS_FILTER_INVALID_SET = 225;
99
- export var WARN_SPLITS_FILTER_LOWERCASE_SET = 226;
100
- export var WARN_FLAGSET_NOT_CONFIGURED = 227;
101
98
  export var ERROR_ENGINE_COMBINER_IFELSEIF = 300;
102
99
  export var ERROR_LOGLEVEL_INVALID = 301;
103
100
  export var ERROR_CLIENT_LISTENER = 302;
@@ -125,8 +122,6 @@ export var ERROR_LOCALHOST_MODULE_REQUIRED = 323;
125
122
  export var ERROR_STORAGE_INVALID = 324;
126
123
  export var ERROR_NOT_BOOLEAN = 325;
127
124
  export var ERROR_MIN_CONFIG_PARAM = 326;
128
- export var ERROR_TOO_MANY_SETS = 327;
129
- export var ERROR_SETS_FILTER_EXCLUSIVE = 328;
130
125
  // Log prefixes (a.k.a. tags or categories)
131
126
  export var LOG_PREFIX_SETTINGS = 'settings';
132
127
  export var LOG_PREFIX_INSTANTIATION = 'Factory instantiation';
@@ -33,6 +33,4 @@ export var codesError = [
33
33
  [c.ERROR_LOCALHOST_MODULE_REQUIRED, c.LOG_PREFIX_SETTINGS + ': an invalid value was received for "sync.localhostMode" config. A valid entity should be provided for localhost mode.'],
34
34
  [c.ERROR_STORAGE_INVALID, c.LOG_PREFIX_SETTINGS + ': the provided storage is invalid.%s Falling back into default MEMORY storage'],
35
35
  [c.ERROR_MIN_CONFIG_PARAM, c.LOG_PREFIX_SETTINGS + ': the provided "%s" config param is lower than allowed. Setting to the minimum value %s seconds'],
36
- [c.ERROR_TOO_MANY_SETS, c.LOG_PREFIX_SETTINGS + ': the amount of flag sets provided are big causing uri length error.'],
37
- [c.ERROR_SETS_FILTER_EXCLUSIVE, c.LOG_PREFIX_SETTINGS + ': the Set filter is exclusive and cannot be used simultaneously with names or prefix filters. Ignoring names and prefixes.'],
38
36
  ];
@@ -1,6 +1,6 @@
1
1
  import * as c from '../constants';
2
2
  import { codesWarn } from './warn';
3
- var READY_MSG = 'Split SDK is ready';
3
+ var READY_MSG = 'Split SDK client is ready';
4
4
  export var codesInfo = codesWarn.concat([
5
5
  // client status
6
6
  [c.CLIENT_READY_FROM_CACHE, READY_MSG + ' from cache'],
@@ -23,15 +23,12 @@ export var codesWarn = codesError.concat([
23
23
  [c.WARN_NOT_EXISTENT_SPLIT, '%s: feature flag "%s" does not exist in this environment. Please double check what feature flags exist in the Split user interface.'],
24
24
  [c.WARN_LOWERCASE_TRAFFIC_TYPE, '%s: traffic_type_name should be all lowercase - converting string to lowercase.'],
25
25
  [c.WARN_NOT_EXISTENT_TT, '%s: traffic type "%s" does not have any corresponding feature flag in this environment, make sure you\'re tracking your events to a valid traffic type defined in the Split user interface.'],
26
- [c.WARN_FLAGSET_NOT_CONFIGURED, '%s: : you passed %s wich is not part of the configured FlagSetsFilter, ignoring Flag Set.'],
27
26
  // initialization / settings validation
28
27
  [c.WARN_INTEGRATION_INVALID, c.LOG_PREFIX_SETTINGS + ': %s integration item(s) at settings is invalid. %s'],
29
28
  [c.WARN_SPLITS_FILTER_IGNORED, c.LOG_PREFIX_SETTINGS + ': feature flag filters have been configured but will have no effect if mode is not "%s", since synchronization is being deferred to an external tool.'],
30
- [c.WARN_SPLITS_FILTER_INVALID, c.LOG_PREFIX_SETTINGS + ': feature flag filter at position %s is invalid. It must be an object with a valid filter type ("bySet", "byName" or "byPrefix") and a list of "values".'],
29
+ [c.WARN_SPLITS_FILTER_INVALID, c.LOG_PREFIX_SETTINGS + ': feature flag filter at position %s is invalid. It must be an object with a valid filter type ("byName" or "byPrefix") and a list of "values".'],
31
30
  [c.WARN_SPLITS_FILTER_EMPTY, c.LOG_PREFIX_SETTINGS + ': feature flag filter configuration must be a non-empty array of filter objects.'],
32
31
  [c.WARN_SDK_KEY, c.LOG_PREFIX_SETTINGS + ': You already have %s. We recommend keeping only one instance of the factory at all times (Singleton pattern) and reusing it throughout your application'],
33
32
  [c.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, c.LOG_PREFIX_SYNC_STREAMING + 'Fetching MySegments due to an error processing %s notification: %s'],
34
33
  [c.STREAMING_PARSING_SPLIT_UPDATE, c.LOG_PREFIX_SYNC_STREAMING + 'Fetching SplitChanges due to an error processing SPLIT_UPDATE notification: %s'],
35
- [c.WARN_SPLITS_FILTER_INVALID_SET, c.LOG_PREFIX_SETTINGS + ': you passed %s, flag set must adhere to the regular expressions %s. This means a flag set must start with a letter or number, be in lowercase, alphanumeric and have a max length of 50 characters. %s was discarded.'],
36
- [c.WARN_SPLITS_FILTER_LOWERCASE_SET, c.LOG_PREFIX_SETTINGS + ': flag set %s should be all lowercase - converting string to lowercase.'],
37
34
  ]);
@@ -1,10 +1,10 @@
1
- import { evaluateFeature, evaluateFeatures, evaluateFeaturesByFlagSets } from '../evaluator';
1
+ import { evaluateFeature, evaluateFeatures } from '../evaluator';
2
2
  import { thenable } from '../utils/promise/thenable';
3
3
  import { getMatching, getBucketing } from '../utils/key';
4
4
  import { validateSplitExistance } from '../utils/inputValidation/splitExistance';
5
5
  import { validateTrafficTypeExistance } from '../utils/inputValidation/trafficTypeExistance';
6
6
  import { SDK_NOT_READY } from '../utils/labels';
7
- import { CONTROL, TREATMENT, TREATMENTS, TREATMENT_WITH_CONFIG, TREATMENTS_WITH_CONFIG, TRACK, TREATMENTS_WITH_CONFIG_BY_FLAGSETS, TREATMENTS_BY_FLAGSETS, TREATMENTS_BY_FLAGSET, TREATMENTS_WITH_CONFIG_BY_FLAGSET } from '../utils/constants';
7
+ import { CONTROL, TREATMENT, TREATMENTS, TREATMENT_WITH_CONFIG, TREATMENTS_WITH_CONFIG, TRACK } from '../utils/constants';
8
8
  import { IMPRESSION, IMPRESSION_QUEUEING } from '../logger/constants';
9
9
  import { isStorageSync } from '../trackers/impressionObserver/utils';
10
10
  var treatmentNotReady = { treatment: CONTROL, label: SDK_NOT_READY };
@@ -64,35 +64,6 @@ export function clientFactory(params) {
64
64
  function getTreatmentsWithConfig(key, featureFlagNames, attributes) {
65
65
  return getTreatments(key, featureFlagNames, attributes, true);
66
66
  }
67
- function getTreatmentsByFlagSets(key, flagSetNames, attributes, withConfig, method) {
68
- if (withConfig === void 0) { withConfig = false; }
69
- if (method === void 0) { method = TREATMENTS_BY_FLAGSETS; }
70
- var stopTelemetryTracker = telemetryTracker.trackEval(method);
71
- var wrapUp = function (evaluationResults) {
72
- var queue = [];
73
- var treatments = {};
74
- var evaluations = evaluationResults;
75
- Object.keys(evaluations).forEach(function (featureFlagName) {
76
- treatments[featureFlagName] = processEvaluation(evaluations[featureFlagName], featureFlagName, key, attributes, withConfig, "getTreatmentsByFlagSets" + (withConfig ? 'WithConfig' : ''), queue);
77
- });
78
- impressionsTracker.track(queue, attributes);
79
- stopTelemetryTracker(queue[0] && queue[0].label);
80
- return treatments;
81
- };
82
- var evaluations = readinessManager.isReady() || readinessManager.isReadyFromCache() ?
83
- evaluateFeaturesByFlagSets(log, key, flagSetNames, attributes, storage) :
84
- isStorageSync(settings) ? {} : Promise.resolve({}); // Promisify if async
85
- return thenable(evaluations) ? evaluations.then(function (res) { return wrapUp(res); }) : wrapUp(evaluations);
86
- }
87
- function getTreatmentsWithConfigByFlagSets(key, flagSetNames, attributes) {
88
- return getTreatmentsByFlagSets(key, flagSetNames, attributes, true, TREATMENTS_WITH_CONFIG_BY_FLAGSETS);
89
- }
90
- function getTreatmentsByFlagSet(key, flagSetName, attributes) {
91
- return getTreatmentsByFlagSets(key, [flagSetName], attributes, false, TREATMENTS_BY_FLAGSET);
92
- }
93
- function getTreatmentsWithConfigByFlagSet(key, flagSetName, attributes) {
94
- return getTreatmentsByFlagSets(key, [flagSetName], attributes, true, TREATMENTS_WITH_CONFIG_BY_FLAGSET);
95
- }
96
67
  // Internal function
97
68
  function processEvaluation(evaluation, featureFlagName, key, attributes, withConfig, invokingMethodName, queue) {
98
69
  var matchingKey = getMatching(key);
@@ -151,10 +122,6 @@ export function clientFactory(params) {
151
122
  getTreatmentWithConfig: getTreatmentWithConfig,
152
123
  getTreatments: getTreatments,
153
124
  getTreatmentsWithConfig: getTreatmentsWithConfig,
154
- getTreatmentsByFlagSets: getTreatmentsByFlagSets,
155
- getTreatmentsWithConfigByFlagSets: getTreatmentsWithConfigByFlagSets,
156
- getTreatmentsByFlagSet: getTreatmentsByFlagSet,
157
- getTreatmentsWithConfigByFlagSet: getTreatmentsWithConfigByFlagSet,
158
125
  track: track,
159
126
  isClientSide: false
160
127
  };
@@ -11,10 +11,6 @@ export function clientAttributesDecoration(log, client) {
11
11
  var clientGetTreatmentWithConfig = client.getTreatmentWithConfig;
12
12
  var clientGetTreatments = client.getTreatments;
13
13
  var clientGetTreatmentsWithConfig = client.getTreatmentsWithConfig;
14
- var clientGetTreatmentsByFlagSets = client.getTreatmentsByFlagSets;
15
- var clientGetTreatmentsWithConfigByFlagSets = client.getTreatmentsWithConfigByFlagSets;
16
- var clientGetTreatmentsByFlagSet = client.getTreatmentsByFlagSet;
17
- var clientGetTreatmentsWithConfigByFlagSet = client.getTreatmentsWithConfigByFlagSet;
18
14
  var clientTrack = client.track;
19
15
  function getTreatment(maybeKey, maybeFeatureFlagName, maybeAttributes) {
20
16
  return clientGetTreatment(maybeKey, maybeFeatureFlagName, combineAttributes(maybeAttributes));
@@ -28,18 +24,6 @@ export function clientAttributesDecoration(log, client) {
28
24
  function getTreatmentsWithConfig(maybeKey, maybeFeatureFlagNames, maybeAttributes) {
29
25
  return clientGetTreatmentsWithConfig(maybeKey, maybeFeatureFlagNames, combineAttributes(maybeAttributes));
30
26
  }
31
- function getTreatmentsByFlagSets(maybeKey, maybeFlagSets, maybeAttributes) {
32
- return clientGetTreatmentsByFlagSets(maybeKey, maybeFlagSets, combineAttributes(maybeAttributes));
33
- }
34
- function getTreatmentsWithConfigByFlagSets(maybeKey, maybeFlagSets, maybeAttributes) {
35
- return clientGetTreatmentsWithConfigByFlagSets(maybeKey, maybeFlagSets, combineAttributes(maybeAttributes));
36
- }
37
- function getTreatmentsByFlagSet(maybeKey, maybeFlagSet, maybeAttributes) {
38
- return clientGetTreatmentsByFlagSet(maybeKey, maybeFlagSet, combineAttributes(maybeAttributes));
39
- }
40
- function getTreatmentsWithConfigByFlagSet(maybeKey, maybeFlagSet, maybeAttributes) {
41
- return clientGetTreatmentsWithConfigByFlagSet(maybeKey, maybeFlagSet, combineAttributes(maybeAttributes));
42
- }
43
27
  function track(maybeKey, maybeTT, maybeEvent, maybeEventValue, maybeProperties) {
44
28
  return clientTrack(maybeKey, maybeTT, maybeEvent, maybeEventValue, maybeProperties);
45
29
  }
@@ -55,10 +39,6 @@ export function clientAttributesDecoration(log, client) {
55
39
  getTreatmentWithConfig: getTreatmentWithConfig,
56
40
  getTreatments: getTreatments,
57
41
  getTreatmentsWithConfig: getTreatmentsWithConfig,
58
- getTreatmentsByFlagSets: getTreatmentsByFlagSets,
59
- getTreatmentsWithConfigByFlagSets: getTreatmentsWithConfigByFlagSets,
60
- getTreatmentsByFlagSet: getTreatmentsByFlagSet,
61
- getTreatmentsWithConfigByFlagSet: getTreatmentsWithConfigByFlagSet,
62
42
  track: track,
63
43
  /**
64
44
  * Add an attribute to client's in memory attributes storage
@@ -15,12 +15,11 @@ export function clientCSDecorator(log, client, key, trafficType) {
15
15
  getTreatmentWithConfig: clientCS.getTreatmentWithConfig.bind(clientCS, key),
16
16
  getTreatments: clientCS.getTreatments.bind(clientCS, key),
17
17
  getTreatmentsWithConfig: clientCS.getTreatmentsWithConfig.bind(clientCS, key),
18
- getTreatmentsByFlagSets: clientCS.getTreatmentsByFlagSets.bind(clientCS, key),
19
- getTreatmentsWithConfigByFlagSets: clientCS.getTreatmentsWithConfigByFlagSets.bind(clientCS, key),
20
- getTreatmentsByFlagSet: clientCS.getTreatmentsByFlagSet.bind(clientCS, key),
21
- getTreatmentsWithConfigByFlagSet: clientCS.getTreatmentsWithConfigByFlagSet.bind(clientCS, key),
22
18
  // Key is bound to the `track` method. Same thing happens with trafficType but only if provided
23
19
  track: trafficType ? clientCS.track.bind(clientCS, key, trafficType) : clientCS.track.bind(clientCS, key),
24
- isClientSide: true
20
+ // Not part of the public API. These properties are used to support other modules (e.g., Split Suite)
21
+ isClientSide: true,
22
+ key: key,
23
+ trafficType: trafficType
25
24
  });
26
25
  }