@splitsoftware/splitio-commons 2.2.1-rc.1 → 2.2.1-rc.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 (143) hide show
  1. package/CHANGES.txt +2 -2
  2. package/README.md +0 -1
  3. package/cjs/evaluator/combiners/and.js +6 -2
  4. package/cjs/evaluator/combiners/ifelseif.js +6 -6
  5. package/cjs/evaluator/condition/index.js +5 -6
  6. package/cjs/evaluator/index.js +7 -7
  7. package/cjs/evaluator/matchers/index.js +1 -3
  8. package/cjs/evaluator/matchers/matcherTypes.js +0 -1
  9. package/cjs/evaluator/matchersTransform/index.js +0 -4
  10. package/cjs/evaluator/parser/index.js +2 -2
  11. package/cjs/evaluator/value/sanitize.js +0 -1
  12. package/cjs/logger/constants.js +3 -4
  13. package/cjs/logger/messages/debug.js +2 -3
  14. package/cjs/logger/messages/warn.js +1 -1
  15. package/cjs/sdkFactory/index.js +3 -0
  16. package/cjs/services/splitApi.js +4 -3
  17. package/cjs/storages/AbstractSplitsCacheSync.js +2 -5
  18. package/cjs/storages/KeyBuilder.js +0 -9
  19. package/cjs/storages/KeyBuilderCS.js +0 -3
  20. package/cjs/storages/KeyBuilderSS.js +0 -3
  21. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +14 -9
  22. package/cjs/storages/inLocalStorage/index.js +1 -5
  23. package/cjs/storages/inLocalStorage/validateCache.js +1 -2
  24. package/cjs/storages/inMemory/InMemoryStorage.js +0 -3
  25. package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -4
  26. package/cjs/storages/inRedis/index.js +12 -6
  27. package/cjs/storages/pluggable/index.js +0 -2
  28. package/cjs/sync/polling/fetchers/splitChangesFetcher.js +4 -51
  29. package/cjs/sync/polling/pollingManagerCS.js +7 -7
  30. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  31. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +2 -2
  32. package/cjs/sync/polling/updaters/segmentChangesUpdater.js +1 -1
  33. package/cjs/sync/polling/updaters/splitChangesUpdater.js +33 -51
  34. package/cjs/sync/streaming/SSEHandler/index.js +0 -1
  35. package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +77 -106
  36. package/cjs/sync/streaming/constants.js +1 -2
  37. package/cjs/sync/streaming/pushManager.js +16 -3
  38. package/cjs/sync/syncManagerOnline.js +2 -2
  39. package/cjs/utils/constants/index.js +2 -3
  40. package/esm/evaluator/combiners/and.js +6 -2
  41. package/esm/evaluator/combiners/ifelseif.js +7 -7
  42. package/esm/evaluator/condition/index.js +5 -6
  43. package/esm/evaluator/index.js +7 -7
  44. package/esm/evaluator/matchers/index.js +1 -3
  45. package/esm/evaluator/matchers/matcherTypes.js +0 -1
  46. package/esm/evaluator/matchersTransform/index.js +0 -4
  47. package/esm/evaluator/parser/index.js +2 -2
  48. package/esm/evaluator/value/sanitize.js +0 -1
  49. package/esm/logger/constants.js +0 -1
  50. package/esm/logger/messages/debug.js +2 -3
  51. package/esm/logger/messages/warn.js +1 -1
  52. package/esm/sdkFactory/index.js +4 -1
  53. package/esm/services/splitApi.js +4 -3
  54. package/esm/storages/AbstractSplitsCacheSync.js +2 -5
  55. package/esm/storages/KeyBuilder.js +0 -9
  56. package/esm/storages/KeyBuilderCS.js +0 -3
  57. package/esm/storages/KeyBuilderSS.js +0 -3
  58. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +14 -9
  59. package/esm/storages/inLocalStorage/index.js +1 -5
  60. package/esm/storages/inLocalStorage/validateCache.js +1 -2
  61. package/esm/storages/inMemory/InMemoryStorage.js +0 -3
  62. package/esm/storages/inMemory/InMemoryStorageCS.js +0 -4
  63. package/esm/storages/inRedis/index.js +12 -6
  64. package/esm/storages/pluggable/index.js +0 -2
  65. package/esm/sync/polling/fetchers/splitChangesFetcher.js +4 -51
  66. package/esm/sync/polling/pollingManagerCS.js +7 -7
  67. package/esm/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  68. package/esm/sync/polling/updaters/mySegmentsUpdater.js +2 -2
  69. package/esm/sync/polling/updaters/segmentChangesUpdater.js +1 -1
  70. package/esm/sync/polling/updaters/splitChangesUpdater.js +33 -51
  71. package/esm/sync/streaming/SSEHandler/index.js +1 -2
  72. package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +73 -102
  73. package/esm/sync/streaming/constants.js +0 -1
  74. package/esm/sync/streaming/pushManager.js +19 -6
  75. package/esm/sync/syncManagerOnline.js +2 -2
  76. package/esm/utils/constants/index.js +1 -2
  77. package/package.json +1 -1
  78. package/src/dtos/types.ts +8 -32
  79. package/src/evaluator/Engine.ts +1 -1
  80. package/src/evaluator/combiners/and.ts +4 -5
  81. package/src/evaluator/combiners/ifelseif.ts +9 -7
  82. package/src/evaluator/condition/engineUtils.ts +1 -1
  83. package/src/evaluator/condition/index.ts +12 -12
  84. package/src/evaluator/index.ts +7 -7
  85. package/src/evaluator/matchers/index.ts +1 -3
  86. package/src/evaluator/matchers/matcherTypes.ts +0 -1
  87. package/src/evaluator/matchersTransform/index.ts +0 -3
  88. package/src/evaluator/parser/index.ts +3 -3
  89. package/src/evaluator/types.ts +2 -2
  90. package/src/evaluator/value/index.ts +2 -2
  91. package/src/evaluator/value/sanitize.ts +4 -5
  92. package/src/logger/constants.ts +0 -1
  93. package/src/logger/messages/debug.ts +2 -3
  94. package/src/logger/messages/warn.ts +1 -1
  95. package/src/sdkFactory/index.ts +4 -1
  96. package/src/sdkManager/index.ts +1 -1
  97. package/src/services/splitApi.ts +4 -3
  98. package/src/services/types.ts +1 -1
  99. package/src/storages/AbstractSplitsCacheSync.ts +3 -6
  100. package/src/storages/KeyBuilder.ts +0 -12
  101. package/src/storages/KeyBuilderCS.ts +0 -4
  102. package/src/storages/KeyBuilderSS.ts +0 -4
  103. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +14 -10
  104. package/src/storages/inLocalStorage/index.ts +1 -5
  105. package/src/storages/inLocalStorage/validateCache.ts +1 -3
  106. package/src/storages/inMemory/InMemoryStorage.ts +0 -3
  107. package/src/storages/inMemory/InMemoryStorageCS.ts +0 -4
  108. package/src/storages/inRedis/index.ts +15 -8
  109. package/src/storages/pluggable/index.ts +0 -2
  110. package/src/storages/types.ts +2 -33
  111. package/src/sync/polling/fetchers/splitChangesFetcher.ts +4 -62
  112. package/src/sync/polling/fetchers/types.ts +0 -1
  113. package/src/sync/polling/pollingManagerCS.ts +7 -7
  114. package/src/sync/polling/syncTasks/splitsSyncTask.ts +1 -1
  115. package/src/sync/polling/types.ts +2 -2
  116. package/src/sync/polling/updaters/mySegmentsUpdater.ts +2 -2
  117. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  118. package/src/sync/polling/updaters/splitChangesUpdater.ts +42 -61
  119. package/src/sync/streaming/SSEHandler/index.ts +1 -2
  120. package/src/sync/streaming/SSEHandler/types.ts +2 -2
  121. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +68 -98
  122. package/src/sync/streaming/constants.ts +0 -1
  123. package/src/sync/streaming/parseUtils.ts +2 -2
  124. package/src/sync/streaming/pushManager.ts +18 -6
  125. package/src/sync/streaming/types.ts +2 -3
  126. package/src/sync/syncManagerOnline.ts +2 -2
  127. package/src/utils/constants/index.ts +1 -2
  128. package/src/utils/lang/index.ts +1 -1
  129. package/cjs/evaluator/matchers/rbsegment.js +0 -44
  130. package/cjs/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -117
  131. package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -61
  132. package/cjs/storages/inRedis/RBSegmentsCacheInRedis.js +0 -64
  133. package/cjs/storages/pluggable/RBSegmentsCachePluggable.js +0 -64
  134. package/esm/evaluator/matchers/rbsegment.js +0 -40
  135. package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -114
  136. package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -58
  137. package/esm/storages/inRedis/RBSegmentsCacheInRedis.js +0 -61
  138. package/esm/storages/pluggable/RBSegmentsCachePluggable.js +0 -61
  139. package/src/evaluator/matchers/rbsegment.ts +0 -62
  140. package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -136
  141. package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -68
  142. package/src/storages/inRedis/RBSegmentsCacheInRedis.ts +0 -79
  143. package/src/storages/pluggable/RBSegmentsCachePluggable.ts +0 -76
@@ -1,79 +0,0 @@
1
- import { isNaNNumber } from '../../utils/lang';
2
- import { IRBSegmentsCacheAsync } from '../types';
3
- import { ILogger } from '../../logger/types';
4
- import { IRBSegment } from '../../dtos/types';
5
- import { LOG_PREFIX } from './constants';
6
- import { setToArray } from '../../utils/lang/sets';
7
- import { RedisAdapter } from './RedisAdapter';
8
- import { KeyBuilderSS } from '../KeyBuilderSS';
9
-
10
- export class RBSegmentsCacheInRedis implements IRBSegmentsCacheAsync {
11
-
12
- private readonly log: ILogger;
13
- private readonly keys: KeyBuilderSS;
14
- private readonly redis: RedisAdapter;
15
-
16
- constructor(log: ILogger, keys: KeyBuilderSS, redis: RedisAdapter) {
17
- this.log = log;
18
- this.keys = keys;
19
- this.redis = redis;
20
- }
21
-
22
- get(name: string): Promise<IRBSegment | null> {
23
- return this.redis.get(this.keys.buildRBSegmentKey(name))
24
- .then(maybeRBSegment => maybeRBSegment && JSON.parse(maybeRBSegment));
25
- }
26
-
27
- private getNames(): Promise<string[]> {
28
- return this.redis.keys(this.keys.searchPatternForRBSegmentKeys()).then(
29
- (listOfKeys) => listOfKeys.map(this.keys.extractKey)
30
- );
31
- }
32
-
33
- contains(names: Set<string>): Promise<boolean> {
34
- const namesArray = setToArray(names);
35
- return this.getNames().then(namesInStorage => {
36
- return namesArray.every(name => namesInStorage.includes(name));
37
- });
38
- }
39
-
40
- update(toAdd: IRBSegment[], toRemove: IRBSegment[], changeNumber: number): Promise<boolean> {
41
- return Promise.all([
42
- this.setChangeNumber(changeNumber),
43
- Promise.all(toAdd.map(toAdd => {
44
- const key = this.keys.buildRBSegmentKey(toAdd.name);
45
- const stringifiedNewRBSegment = JSON.stringify(toAdd);
46
- return this.redis.set(key, stringifiedNewRBSegment).then(() => true);
47
- })),
48
- Promise.all(toRemove.map(toRemove => {
49
- const key = this.keys.buildRBSegmentKey(toRemove.name);
50
- return this.redis.del(key).then(status => status === 1);
51
- }))
52
- ]).then(([, added, removed]) => {
53
- return added.some(result => result) || removed.some(result => result);
54
- });
55
- }
56
-
57
- setChangeNumber(changeNumber: number) {
58
- return this.redis.set(this.keys.buildRBSegmentsTillKey(), changeNumber + '').then(
59
- status => status === 'OK'
60
- );
61
- }
62
-
63
- getChangeNumber(): Promise<number> {
64
- return this.redis.get(this.keys.buildRBSegmentsTillKey()).then((value: string | null) => {
65
- const i = parseInt(value as string, 10);
66
-
67
- return isNaNNumber(i) ? -1 : i;
68
- }).catch((e) => {
69
- this.log.error(LOG_PREFIX + 'Could not retrieve changeNumber from storage. Error: ' + e);
70
- return -1;
71
- });
72
- }
73
-
74
- // @TODO implement if required by DataLoader or producer mode
75
- clear() {
76
- return Promise.resolve();
77
- }
78
-
79
- }
@@ -1,76 +0,0 @@
1
- import { isNaNNumber } from '../../utils/lang';
2
- import { KeyBuilder } from '../KeyBuilder';
3
- import { IPluggableStorageWrapper, IRBSegmentsCacheAsync } from '../types';
4
- import { ILogger } from '../../logger/types';
5
- import { IRBSegment } from '../../dtos/types';
6
- import { LOG_PREFIX } from './constants';
7
- import { setToArray } from '../../utils/lang/sets';
8
-
9
- export class RBSegmentsCachePluggable implements IRBSegmentsCacheAsync {
10
-
11
- private readonly log: ILogger;
12
- private readonly keys: KeyBuilder;
13
- private readonly wrapper: IPluggableStorageWrapper;
14
-
15
- constructor(log: ILogger, keys: KeyBuilder, wrapper: IPluggableStorageWrapper) {
16
- this.log = log;
17
- this.keys = keys;
18
- this.wrapper = wrapper;
19
- }
20
-
21
- get(name: string): Promise<IRBSegment | null> {
22
- return this.wrapper.get(this.keys.buildRBSegmentKey(name))
23
- .then(maybeRBSegment => maybeRBSegment && JSON.parse(maybeRBSegment));
24
- }
25
-
26
- private getNames(): Promise<string[]> {
27
- return this.wrapper.getKeysByPrefix(this.keys.buildRBSegmentKeyPrefix()).then(
28
- (listOfKeys) => listOfKeys.map(this.keys.extractKey)
29
- );
30
- }
31
-
32
- contains(names: Set<string>): Promise<boolean> {
33
- const namesArray = setToArray(names);
34
- return this.getNames().then(namesInStorage => {
35
- return namesArray.every(name => namesInStorage.includes(name));
36
- });
37
- }
38
-
39
- update(toAdd: IRBSegment[], toRemove: IRBSegment[], changeNumber: number): Promise<boolean> {
40
- return Promise.all([
41
- this.setChangeNumber(changeNumber),
42
- Promise.all(toAdd.map(toAdd => {
43
- const key = this.keys.buildRBSegmentKey(toAdd.name);
44
- const stringifiedNewRBSegment = JSON.stringify(toAdd);
45
- return this.wrapper.set(key, stringifiedNewRBSegment).then(() => true);
46
- })),
47
- Promise.all(toRemove.map(toRemove => {
48
- const key = this.keys.buildRBSegmentKey(toRemove.name);
49
- return this.wrapper.del(key);
50
- }))
51
- ]).then(([, added, removed]) => {
52
- return added.some(result => result) || removed.some(result => result);
53
- });
54
- }
55
-
56
- setChangeNumber(changeNumber: number) {
57
- return this.wrapper.set(this.keys.buildRBSegmentsTillKey(), changeNumber + '');
58
- }
59
-
60
- getChangeNumber(): Promise<number> {
61
- return this.wrapper.get(this.keys.buildRBSegmentsTillKey()).then((value) => {
62
- const i = parseInt(value as string, 10);
63
-
64
- return isNaNNumber(i) ? -1 : i;
65
- }).catch((e) => {
66
- this.log.error(LOG_PREFIX + 'Could not retrieve changeNumber from storage. Error: ' + e);
67
- return -1;
68
- });
69
- }
70
-
71
- // @TODO implement if required by DataLoader or producer mode
72
- clear() {
73
- return Promise.resolve();
74
- }
75
-
76
- }