@splitsoftware/splitio-commons 2.2.1-rc.1 → 2.2.1-rc.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 (140) 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/services/splitApi.js +4 -3
  16. package/cjs/storages/AbstractSplitsCacheSync.js +2 -5
  17. package/cjs/storages/KeyBuilder.js +0 -9
  18. package/cjs/storages/KeyBuilderCS.js +0 -3
  19. package/cjs/storages/KeyBuilderSS.js +0 -3
  20. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +14 -9
  21. package/cjs/storages/inLocalStorage/index.js +1 -5
  22. package/cjs/storages/inLocalStorage/validateCache.js +1 -2
  23. package/cjs/storages/inMemory/InMemoryStorage.js +0 -3
  24. package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -4
  25. package/cjs/storages/inRedis/index.js +9 -5
  26. package/cjs/storages/pluggable/index.js +0 -2
  27. package/cjs/sync/polling/fetchers/splitChangesFetcher.js +4 -51
  28. package/cjs/sync/polling/pollingManagerCS.js +7 -7
  29. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  30. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +2 -2
  31. package/cjs/sync/polling/updaters/segmentChangesUpdater.js +1 -1
  32. package/cjs/sync/polling/updaters/splitChangesUpdater.js +33 -51
  33. package/cjs/sync/streaming/SSEHandler/index.js +0 -1
  34. package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +77 -106
  35. package/cjs/sync/streaming/constants.js +1 -2
  36. package/cjs/sync/streaming/pushManager.js +16 -3
  37. package/cjs/sync/syncManagerOnline.js +2 -2
  38. package/cjs/utils/constants/index.js +2 -3
  39. package/esm/evaluator/combiners/and.js +6 -2
  40. package/esm/evaluator/combiners/ifelseif.js +7 -7
  41. package/esm/evaluator/condition/index.js +5 -6
  42. package/esm/evaluator/index.js +7 -7
  43. package/esm/evaluator/matchers/index.js +1 -3
  44. package/esm/evaluator/matchers/matcherTypes.js +0 -1
  45. package/esm/evaluator/matchersTransform/index.js +0 -4
  46. package/esm/evaluator/parser/index.js +2 -2
  47. package/esm/evaluator/value/sanitize.js +0 -1
  48. package/esm/logger/constants.js +0 -1
  49. package/esm/logger/messages/debug.js +2 -3
  50. package/esm/logger/messages/warn.js +1 -1
  51. package/esm/services/splitApi.js +4 -3
  52. package/esm/storages/AbstractSplitsCacheSync.js +2 -5
  53. package/esm/storages/KeyBuilder.js +0 -9
  54. package/esm/storages/KeyBuilderCS.js +0 -3
  55. package/esm/storages/KeyBuilderSS.js +0 -3
  56. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +14 -9
  57. package/esm/storages/inLocalStorage/index.js +1 -5
  58. package/esm/storages/inLocalStorage/validateCache.js +1 -2
  59. package/esm/storages/inMemory/InMemoryStorage.js +0 -3
  60. package/esm/storages/inMemory/InMemoryStorageCS.js +0 -4
  61. package/esm/storages/inRedis/index.js +9 -5
  62. package/esm/storages/pluggable/index.js +0 -2
  63. package/esm/sync/polling/fetchers/splitChangesFetcher.js +4 -51
  64. package/esm/sync/polling/pollingManagerCS.js +7 -7
  65. package/esm/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  66. package/esm/sync/polling/updaters/mySegmentsUpdater.js +2 -2
  67. package/esm/sync/polling/updaters/segmentChangesUpdater.js +1 -1
  68. package/esm/sync/polling/updaters/splitChangesUpdater.js +33 -51
  69. package/esm/sync/streaming/SSEHandler/index.js +1 -2
  70. package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +73 -102
  71. package/esm/sync/streaming/constants.js +0 -1
  72. package/esm/sync/streaming/pushManager.js +19 -6
  73. package/esm/sync/syncManagerOnline.js +2 -2
  74. package/esm/utils/constants/index.js +1 -2
  75. package/package.json +1 -1
  76. package/src/dtos/types.ts +8 -32
  77. package/src/evaluator/Engine.ts +1 -1
  78. package/src/evaluator/combiners/and.ts +4 -5
  79. package/src/evaluator/combiners/ifelseif.ts +9 -7
  80. package/src/evaluator/condition/engineUtils.ts +1 -1
  81. package/src/evaluator/condition/index.ts +12 -12
  82. package/src/evaluator/index.ts +7 -7
  83. package/src/evaluator/matchers/index.ts +1 -3
  84. package/src/evaluator/matchers/matcherTypes.ts +0 -1
  85. package/src/evaluator/matchersTransform/index.ts +0 -3
  86. package/src/evaluator/parser/index.ts +3 -3
  87. package/src/evaluator/types.ts +2 -2
  88. package/src/evaluator/value/index.ts +2 -2
  89. package/src/evaluator/value/sanitize.ts +4 -5
  90. package/src/logger/constants.ts +0 -1
  91. package/src/logger/messages/debug.ts +2 -3
  92. package/src/logger/messages/warn.ts +1 -1
  93. package/src/sdkManager/index.ts +1 -1
  94. package/src/services/splitApi.ts +4 -3
  95. package/src/services/types.ts +1 -1
  96. package/src/storages/AbstractSplitsCacheSync.ts +3 -6
  97. package/src/storages/KeyBuilder.ts +0 -12
  98. package/src/storages/KeyBuilderCS.ts +0 -4
  99. package/src/storages/KeyBuilderSS.ts +0 -4
  100. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +14 -10
  101. package/src/storages/inLocalStorage/index.ts +1 -5
  102. package/src/storages/inLocalStorage/validateCache.ts +1 -3
  103. package/src/storages/inMemory/InMemoryStorage.ts +0 -3
  104. package/src/storages/inMemory/InMemoryStorageCS.ts +0 -4
  105. package/src/storages/inRedis/index.ts +11 -7
  106. package/src/storages/pluggable/index.ts +0 -2
  107. package/src/storages/types.ts +1 -33
  108. package/src/sync/polling/fetchers/splitChangesFetcher.ts +4 -62
  109. package/src/sync/polling/fetchers/types.ts +0 -1
  110. package/src/sync/polling/pollingManagerCS.ts +7 -7
  111. package/src/sync/polling/syncTasks/splitsSyncTask.ts +1 -1
  112. package/src/sync/polling/types.ts +2 -2
  113. package/src/sync/polling/updaters/mySegmentsUpdater.ts +2 -2
  114. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  115. package/src/sync/polling/updaters/splitChangesUpdater.ts +42 -61
  116. package/src/sync/streaming/SSEHandler/index.ts +1 -2
  117. package/src/sync/streaming/SSEHandler/types.ts +2 -2
  118. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +68 -98
  119. package/src/sync/streaming/constants.ts +0 -1
  120. package/src/sync/streaming/parseUtils.ts +2 -2
  121. package/src/sync/streaming/pushManager.ts +18 -6
  122. package/src/sync/streaming/types.ts +2 -3
  123. package/src/sync/syncManagerOnline.ts +2 -2
  124. package/src/utils/constants/index.ts +1 -2
  125. package/src/utils/lang/index.ts +1 -1
  126. package/cjs/evaluator/matchers/rbsegment.js +0 -44
  127. package/cjs/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -117
  128. package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -61
  129. package/cjs/storages/inRedis/RBSegmentsCacheInRedis.js +0 -64
  130. package/cjs/storages/pluggable/RBSegmentsCachePluggable.js +0 -64
  131. package/esm/evaluator/matchers/rbsegment.js +0 -40
  132. package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -114
  133. package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -58
  134. package/esm/storages/inRedis/RBSegmentsCacheInRedis.js +0 -61
  135. package/esm/storages/pluggable/RBSegmentsCachePluggable.js +0 -61
  136. package/src/evaluator/matchers/rbsegment.ts +0 -62
  137. package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -136
  138. package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -68
  139. package/src/storages/inRedis/RBSegmentsCacheInRedis.ts +0 -79
  140. 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
- }