@splitsoftware/splitio-commons 1.16.0 → 1.16.1-rc.1

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 (148) hide show
  1. package/CHANGES.txt +3 -0
  2. package/cjs/evaluator/matchers/index.js +3 -1
  3. package/cjs/evaluator/matchers/large_segment.js +16 -0
  4. package/cjs/evaluator/matchers/matcherTypes.js +1 -0
  5. package/cjs/evaluator/matchersTransform/index.js +1 -1
  6. package/cjs/logger/constants.js +4 -4
  7. package/cjs/logger/messages/info.js +0 -1
  8. package/cjs/readiness/readinessManager.js +14 -10
  9. package/cjs/readiness/sdkReadinessManager.js +5 -6
  10. package/cjs/sdkClient/sdkClientMethodCS.js +3 -4
  11. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +4 -5
  12. package/cjs/sdkFactory/index.js +1 -1
  13. package/cjs/services/splitApi.js +4 -0
  14. package/cjs/storages/AbstractSplitsCacheAsync.js +2 -2
  15. package/cjs/storages/AbstractSplitsCacheSync.js +5 -5
  16. package/cjs/storages/KeyBuilder.js +3 -0
  17. package/cjs/storages/KeyBuilderCS.js +17 -5
  18. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +16 -4
  19. package/cjs/storages/inLocalStorage/index.js +6 -2
  20. package/cjs/storages/inMemory/InMemoryStorageCS.js +5 -0
  21. package/cjs/storages/inMemory/SplitsCacheInMemory.js +20 -11
  22. package/cjs/storages/inMemory/TelemetryCacheInMemory.js +7 -10
  23. package/cjs/storages/pluggable/inMemoryWrapper.js +1 -1
  24. package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +5 -1
  25. package/cjs/sync/polling/pollingManagerCS.js +51 -33
  26. package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +2 -2
  27. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +5 -6
  28. package/cjs/sync/polling/updaters/splitChangesUpdater.js +2 -1
  29. package/cjs/sync/streaming/SSEHandler/index.js +1 -0
  30. package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +15 -5
  31. package/cjs/sync/streaming/constants.js +2 -1
  32. package/cjs/sync/streaming/pushManager.js +95 -64
  33. package/cjs/sync/submitters/telemetrySubmitter.js +2 -0
  34. package/cjs/sync/syncManagerOnline.js +24 -14
  35. package/cjs/utils/constants/index.js +5 -1
  36. package/cjs/utils/settingsValidation/index.js +9 -4
  37. package/esm/evaluator/matchers/index.js +3 -1
  38. package/esm/evaluator/matchers/large_segment.js +12 -0
  39. package/esm/evaluator/matchers/matcherTypes.js +1 -0
  40. package/esm/evaluator/matchersTransform/index.js +1 -1
  41. package/esm/logger/constants.js +1 -1
  42. package/esm/logger/messages/info.js +0 -1
  43. package/esm/readiness/readinessManager.js +14 -10
  44. package/esm/readiness/sdkReadinessManager.js +5 -6
  45. package/esm/sdkClient/sdkClientMethodCS.js +4 -5
  46. package/esm/sdkClient/sdkClientMethodCSWithTT.js +5 -6
  47. package/esm/sdkFactory/index.js +1 -1
  48. package/esm/services/splitApi.js +5 -1
  49. package/esm/storages/AbstractSplitsCacheAsync.js +2 -2
  50. package/esm/storages/AbstractSplitsCacheSync.js +3 -3
  51. package/esm/storages/KeyBuilder.js +3 -0
  52. package/esm/storages/KeyBuilderCS.js +15 -4
  53. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +17 -5
  54. package/esm/storages/inLocalStorage/index.js +7 -3
  55. package/esm/storages/inMemory/InMemoryStorageCS.js +5 -0
  56. package/esm/storages/inMemory/SplitsCacheInMemory.js +21 -12
  57. package/esm/storages/inMemory/TelemetryCacheInMemory.js +7 -10
  58. package/esm/storages/pluggable/inMemoryWrapper.js +1 -1
  59. package/esm/sync/polling/fetchers/mySegmentsFetcher.js +5 -1
  60. package/esm/sync/polling/pollingManagerCS.js +52 -34
  61. package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +2 -2
  62. package/esm/sync/polling/updaters/mySegmentsUpdater.js +3 -4
  63. package/esm/sync/polling/updaters/splitChangesUpdater.js +2 -1
  64. package/esm/sync/streaming/SSEHandler/index.js +2 -1
  65. package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +15 -5
  66. package/esm/sync/streaming/constants.js +1 -0
  67. package/esm/sync/streaming/pushManager.js +95 -65
  68. package/esm/sync/submitters/telemetrySubmitter.js +2 -0
  69. package/esm/sync/syncManagerOnline.js +25 -15
  70. package/esm/utils/constants/index.js +4 -0
  71. package/esm/utils/settingsValidation/index.js +10 -5
  72. package/package.json +1 -1
  73. package/src/dtos/types.ts +17 -7
  74. package/src/evaluator/matchers/index.ts +2 -0
  75. package/src/evaluator/matchers/large_segment.ts +18 -0
  76. package/src/evaluator/matchers/matcherTypes.ts +1 -0
  77. package/src/evaluator/matchersTransform/index.ts +1 -1
  78. package/src/logger/constants.ts +1 -1
  79. package/src/logger/messages/info.ts +0 -1
  80. package/src/readiness/readinessManager.ts +13 -9
  81. package/src/readiness/sdkReadinessManager.ts +7 -7
  82. package/src/readiness/types.ts +3 -2
  83. package/src/sdkClient/sdkClientMethodCS.ts +4 -6
  84. package/src/sdkClient/sdkClientMethodCSWithTT.ts +5 -7
  85. package/src/sdkFactory/index.ts +1 -1
  86. package/src/services/splitApi.ts +6 -1
  87. package/src/services/types.ts +1 -0
  88. package/src/storages/AbstractSplitsCacheAsync.ts +2 -2
  89. package/src/storages/AbstractSplitsCacheSync.ts +4 -4
  90. package/src/storages/KeyBuilder.ts +3 -0
  91. package/src/storages/KeyBuilderCS.ts +25 -5
  92. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +3 -3
  93. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +20 -5
  94. package/src/storages/inLocalStorage/index.ts +8 -4
  95. package/src/storages/inMemory/InMemoryStorageCS.ts +5 -0
  96. package/src/storages/inMemory/SplitsCacheInMemory.ts +15 -10
  97. package/src/storages/inMemory/TelemetryCacheInMemory.ts +7 -11
  98. package/src/storages/pluggable/inMemoryWrapper.ts +1 -1
  99. package/src/storages/types.ts +7 -5
  100. package/src/sync/polling/fetchers/mySegmentsFetcher.ts +6 -2
  101. package/src/sync/polling/pollingManagerCS.ts +61 -29
  102. package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +10 -10
  103. package/src/sync/polling/types.ts +3 -2
  104. package/src/sync/polling/updaters/mySegmentsUpdater.ts +5 -8
  105. package/src/sync/polling/updaters/splitChangesUpdater.ts +4 -3
  106. package/src/sync/streaming/SSEHandler/index.ts +2 -1
  107. package/src/sync/streaming/SSEHandler/types.ts +14 -2
  108. package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +17 -5
  109. package/src/sync/streaming/constants.ts +1 -0
  110. package/src/sync/streaming/pushManager.ts +100 -63
  111. package/src/sync/streaming/types.ts +5 -3
  112. package/src/sync/submitters/telemetrySubmitter.ts +2 -0
  113. package/src/sync/submitters/types.ts +10 -4
  114. package/src/sync/syncManagerOnline.ts +19 -11
  115. package/src/types.ts +26 -1
  116. package/src/utils/constants/index.ts +5 -0
  117. package/src/utils/settingsValidation/index.ts +11 -6
  118. package/src/utils/settingsValidation/types.ts +1 -1
  119. package/types/dtos/types.d.ts +14 -6
  120. package/types/evaluator/matchers/large_segment.d.ts +5 -0
  121. package/types/logger/constants.d.ts +1 -1
  122. package/types/readiness/readinessManager.d.ts +2 -2
  123. package/types/readiness/sdkReadinessManager.d.ts +2 -3
  124. package/types/readiness/types.d.ts +3 -2
  125. package/types/services/types.d.ts +1 -0
  126. package/types/storages/AbstractSplitsCacheAsync.d.ts +1 -1
  127. package/types/storages/AbstractSplitsCacheSync.d.ts +3 -3
  128. package/types/storages/KeyBuilder.d.ts +1 -0
  129. package/types/storages/KeyBuilderCS.d.ts +7 -2
  130. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +2 -2
  131. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +1 -1
  132. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +3 -2
  133. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +4 -6
  134. package/types/storages/pluggable/inMemoryWrapper.d.ts +1 -1
  135. package/types/storages/types.d.ts +4 -3
  136. package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +2 -3
  137. package/types/sync/polling/types.d.ts +9 -2
  138. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +4 -4
  139. package/types/sync/streaming/SSEHandler/types.d.ts +13 -2
  140. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +2 -1
  141. package/types/sync/streaming/constants.d.ts +1 -0
  142. package/types/sync/streaming/pushManager.d.ts +2 -0
  143. package/types/sync/streaming/types.d.ts +5 -4
  144. package/types/sync/submitters/types.d.ts +9 -3
  145. package/types/types.d.ts +25 -0
  146. package/types/utils/constants/index.d.ts +3 -0
  147. package/types/utils/settingsValidation/index.d.ts +2 -0
  148. package/types/utils/settingsValidation/types.d.ts +1 -1
@@ -1,9 +1,8 @@
1
- import { IStorageSync } from '../../../storages/types';
2
- import { IReadinessManager } from '../../../readiness/types';
1
+ import { ISegmentsCacheSync } from '../../../storages/types';
3
2
  import { IMySegmentsSyncTask } from '../types';
4
3
  import { IFetchMySegments } from '../../../services/types';
5
4
  import { ISettings } from '../../../types';
6
5
  /**
7
6
  * Creates a sync task that periodically executes a `mySegmentsUpdater` task
8
7
  */
9
- export declare function mySegmentsSyncTaskFactory(fetchMySegments: IFetchMySegments, storage: IStorageSync, readiness: IReadinessManager, settings: ISettings, matchingKey: string): IMySegmentsSyncTask;
8
+ export declare function mySegmentsSyncTaskFactory(fetchMySegments: IFetchMySegments, mySegmentsCache: ISegmentsCacheSync, notifyUpdate: () => void, settings: ISettings, matchingKey: string, segmentsRefreshRate: number, NAME: string): IMySegmentsSyncTask;
@@ -19,12 +19,19 @@ export interface IPollingManager extends ITask {
19
19
  syncAll(): Promise<any>;
20
20
  splitsSyncTask: ISplitsSyncTask;
21
21
  segmentsSyncTask: ISyncTask;
22
+ largeSegmentsSyncTask?: ISyncTask;
22
23
  }
23
24
  /**
24
25
  * PollingManager for client-side with support for multiple clients
25
26
  */
26
27
  export interface IPollingManagerCS extends IPollingManager {
27
- add(matchingKey: string, readiness: IReadinessManager, storage: IStorageSync): IMySegmentsSyncTask;
28
+ add(matchingKey: string, readiness: IReadinessManager, storage: IStorageSync): {
29
+ msSyncTask: IMySegmentsSyncTask;
30
+ mlsSyncTask?: IMySegmentsSyncTask;
31
+ };
28
32
  remove(matchingKey: string): void;
29
- get(matchingKey: string): IMySegmentsSyncTask | undefined;
33
+ get(matchingKey: string): {
34
+ msSyncTask: IMySegmentsSyncTask;
35
+ mlsSyncTask?: IMySegmentsSyncTask;
36
+ } | undefined;
30
37
  }
@@ -1,13 +1,13 @@
1
1
  import { IMySegmentsFetcher } from '../fetchers/types';
2
- import { ISegmentsCacheSync, ISplitsCacheSync } from '../../../storages/types';
3
- import { ISegmentsEventEmitter } from '../../../readiness/types';
2
+ import { ISegmentsCacheSync } from '../../../storages/types';
4
3
  import { ILogger } from '../../../logger/types';
5
- declare type IMySegmentsUpdater = (segmentList?: string[], noCache?: boolean) => Promise<boolean>;
4
+ import { MySegmentsData } from '../types';
5
+ declare type IMySegmentsUpdater = (segmentList?: MySegmentsData, noCache?: boolean) => Promise<boolean>;
6
6
  /**
7
7
  * factory of MySegments updater, a task that:
8
8
  * - fetches mySegments using `mySegmentsFetcher`
9
9
  * - updates `mySegmentsCache`
10
10
  * - uses `segmentsEventEmitter` to emit events related to segments data updates
11
11
  */
12
- export declare function mySegmentsUpdaterFactory(log: ILogger, mySegmentsFetcher: IMySegmentsFetcher, splitsCache: ISplitsCacheSync, mySegmentsCache: ISegmentsCacheSync, segmentsEventEmitter: ISegmentsEventEmitter, requestTimeoutBeforeReady: number, retriesOnFailureBeforeReady: number, matchingKey: string): IMySegmentsUpdater;
12
+ export declare function mySegmentsUpdaterFactory(log: ILogger, mySegmentsFetcher: IMySegmentsFetcher, mySegmentsCache: ISegmentsCacheSync, notifyUpdate: () => void, requestTimeoutBeforeReady: number, retriesOnFailureBeforeReady: number, matchingKey: string): IMySegmentsUpdater;
13
13
  export {};
@@ -1,5 +1,5 @@
1
1
  import { ControlType } from '../constants';
2
- import { MY_SEGMENTS_UPDATE, MY_SEGMENTS_UPDATE_V2, SEGMENT_UPDATE, SPLIT_UPDATE, SPLIT_KILL, CONTROL, OCCUPANCY } from '../types';
2
+ import { MY_SEGMENTS_UPDATE, MY_SEGMENTS_UPDATE_V2, SEGMENT_UPDATE, SPLIT_UPDATE, SPLIT_KILL, CONTROL, OCCUPANCY, MY_LARGE_SEGMENTS_UPDATE } from '../types';
3
3
  export interface IMySegmentsUpdateData {
4
4
  type: MY_SEGMENTS_UPDATE;
5
5
  changeNumber: number;
@@ -29,6 +29,17 @@ export interface IMySegmentsUpdateV2Data {
29
29
  d: string;
30
30
  u: UpdateStrategy;
31
31
  }
32
+ export interface IMyLargeSegmentsUpdateData {
33
+ type: MY_LARGE_SEGMENTS_UPDATE;
34
+ changeNumber: number;
35
+ largeSegments: string[];
36
+ c: Compression;
37
+ d: string;
38
+ u: UpdateStrategy;
39
+ i?: number;
40
+ h?: number;
41
+ s?: number;
42
+ }
32
43
  export interface ISegmentUpdateData {
33
44
  type: SEGMENT_UPDATE;
34
45
  changeNumber: number;
@@ -57,7 +68,7 @@ export interface IOccupancyData {
57
68
  publishers: number;
58
69
  };
59
70
  }
60
- export declare type INotificationData = IMySegmentsUpdateData | IMySegmentsUpdateV2Data | ISegmentUpdateData | ISplitUpdateData | ISplitKillData | IControlData | IOccupancyData;
71
+ export declare type INotificationData = IMySegmentsUpdateData | IMySegmentsUpdateV2Data | IMyLargeSegmentsUpdateData | ISegmentUpdateData | ISplitUpdateData | ISplitKillData | IControlData | IOccupancyData;
61
72
  export declare type INotificationMessage = {
62
73
  parsedData: INotificationData;
63
74
  channel: string;
@@ -1,7 +1,8 @@
1
1
  import { IMySegmentsSyncTask } from '../../polling/types';
2
2
  import { IUpdateWorker } from './types';
3
3
  import { ITelemetryTracker } from '../../../trackers/types';
4
+ import { UpdatesFromSSEEnum } from '../../submitters/types';
4
5
  /**
5
6
  * MySegmentsUpdateWorker factory
6
7
  */
7
- export declare function MySegmentsUpdateWorker(mySegmentsSyncTask: IMySegmentsSyncTask, telemetryTracker: ITelemetryTracker): IUpdateWorker;
8
+ export declare function MySegmentsUpdateWorker(mySegmentsSyncTask: IMySegmentsSyncTask, telemetryTracker: ITelemetryTracker, updateType: UpdatesFromSSEEnum): IUpdateWorker;
@@ -24,6 +24,7 @@ export declare const MY_SEGMENTS_UPDATE_V2 = "MY_SEGMENTS_UPDATE_V2";
24
24
  export declare const SEGMENT_UPDATE = "SEGMENT_UPDATE";
25
25
  export declare const SPLIT_KILL = "SPLIT_KILL";
26
26
  export declare const SPLIT_UPDATE = "SPLIT_UPDATE";
27
+ export declare const MY_LARGE_SEGMENTS_UPDATE = "MY_LARGE_SEGMENTS_UPDATE";
27
28
  export declare const CONTROL = "CONTROL";
28
29
  export declare const OCCUPANCY = "OCCUPANCY";
29
30
  export declare enum ControlType {
@@ -1,6 +1,8 @@
1
1
  import { IPushManager } from './types';
2
2
  import { IPollingManager } from '../polling/types';
3
+ import { IMyLargeSegmentsUpdateData } from './SSEHandler/types';
3
4
  import { ISdkFactoryContextSync } from '../../sdkFactory/types';
5
+ export declare function getDelay(parsedData: Pick<IMyLargeSegmentsUpdateData, 'i' | 'h' | 's'>, matchingKey: string): number;
4
6
  /**
5
7
  * PushManager factory:
6
8
  * - for server-side if key is not provided in settings.
@@ -1,4 +1,4 @@
1
- import { IMySegmentsUpdateData, IMySegmentsUpdateV2Data, ISegmentUpdateData, ISplitUpdateData, ISplitKillData } from './SSEHandler/types';
1
+ import { IMySegmentsUpdateData, IMySegmentsUpdateV2Data, ISegmentUpdateData, ISplitUpdateData, ISplitKillData, IMyLargeSegmentsUpdateData } from './SSEHandler/types';
2
2
  import { ITask } from '../types';
3
3
  import { IMySegmentsSyncTask } from '../polling/types';
4
4
  import { IEventEmitter } from '../../types';
@@ -12,10 +12,11 @@ export declare type MY_SEGMENTS_UPDATE_V2 = 'MY_SEGMENTS_UPDATE_V2';
12
12
  export declare type SEGMENT_UPDATE = 'SEGMENT_UPDATE';
13
13
  export declare type SPLIT_KILL = 'SPLIT_KILL';
14
14
  export declare type SPLIT_UPDATE = 'SPLIT_UPDATE';
15
+ export declare type MY_LARGE_SEGMENTS_UPDATE = 'MY_LARGE_SEGMENTS_UPDATE';
15
16
  export declare type CONTROL = 'CONTROL';
16
17
  export declare type OCCUPANCY = 'OCCUPANCY';
17
- export declare type IPushEvent = PUSH_SUBSYSTEM_UP | PUSH_SUBSYSTEM_DOWN | PUSH_NONRETRYABLE_ERROR | PUSH_RETRYABLE_ERROR | MY_SEGMENTS_UPDATE | MY_SEGMENTS_UPDATE_V2 | SEGMENT_UPDATE | SPLIT_UPDATE | SPLIT_KILL | ControlType.STREAMING_RESET;
18
- declare type IParsedData<T extends IPushEvent> = T extends MY_SEGMENTS_UPDATE ? IMySegmentsUpdateData : T extends MY_SEGMENTS_UPDATE_V2 ? IMySegmentsUpdateV2Data : T extends SEGMENT_UPDATE ? ISegmentUpdateData : T extends SPLIT_UPDATE ? ISplitUpdateData : T extends SPLIT_KILL ? ISplitKillData : undefined;
18
+ export declare type IPushEvent = PUSH_SUBSYSTEM_UP | PUSH_SUBSYSTEM_DOWN | PUSH_NONRETRYABLE_ERROR | PUSH_RETRYABLE_ERROR | MY_SEGMENTS_UPDATE | MY_SEGMENTS_UPDATE_V2 | SEGMENT_UPDATE | SPLIT_UPDATE | SPLIT_KILL | MY_LARGE_SEGMENTS_UPDATE | ControlType.STREAMING_RESET;
19
+ declare type IParsedData<T extends IPushEvent> = T extends MY_SEGMENTS_UPDATE ? IMySegmentsUpdateData : T extends MY_SEGMENTS_UPDATE_V2 ? IMySegmentsUpdateV2Data : T extends MY_LARGE_SEGMENTS_UPDATE ? IMyLargeSegmentsUpdateData : T extends SEGMENT_UPDATE ? ISegmentUpdateData : T extends SPLIT_UPDATE ? ISplitUpdateData : T extends SPLIT_KILL ? ISplitKillData : undefined;
19
20
  /**
20
21
  * EventEmitter used as Feedback Loop between the SyncManager and PushManager,
21
22
  * where the latter pushes messages and the former consumes it
@@ -29,7 +30,7 @@ export interface IPushEventEmitter extends IEventEmitter {
29
30
  * PushManager
30
31
  */
31
32
  export interface IPushManager extends ITask, IPushEventEmitter {
32
- add(userKey: string, mySegmentsSyncTask: IMySegmentsSyncTask): void;
33
+ add(userKey: string, mySegmentsSyncTask: IMySegmentsSyncTask, myLargeSegmentsSyncTask?: IMySegmentsSyncTask): void;
33
34
  remove(userKey: string): void;
34
35
  }
35
36
  export {};
@@ -90,7 +90,7 @@ export declare type DROPPED = 1;
90
90
  export declare type DEDUPED = 2;
91
91
  export declare type ImpressionDataType = QUEUED | DROPPED | DEDUPED;
92
92
  export declare type EventDataType = QUEUED | DROPPED;
93
- export declare type UpdatesFromSSEEnum = SPLITS | MY_SEGMENT;
93
+ export declare type UpdatesFromSSEEnum = SPLITS | MY_SEGMENT | MY_LARGE_SEGMENT;
94
94
  export declare type SPLITS = 'sp';
95
95
  export declare type IMPRESSIONS = 'im';
96
96
  export declare type IMPRESSIONS_COUNT = 'ic';
@@ -99,7 +99,8 @@ export declare type TELEMETRY = 'te';
99
99
  export declare type TOKEN = 'to';
100
100
  export declare type SEGMENT = 'se';
101
101
  export declare type MY_SEGMENT = 'ms';
102
- export declare type OperationType = SPLITS | IMPRESSIONS | IMPRESSIONS_COUNT | EVENTS | TELEMETRY | TOKEN | SEGMENT | MY_SEGMENT;
102
+ export declare type MY_LARGE_SEGMENT = 'mls';
103
+ export declare type OperationType = SPLITS | IMPRESSIONS | IMPRESSIONS_COUNT | EVENTS | TELEMETRY | TOKEN | SEGMENT | MY_SEGMENT | MY_LARGE_SEGMENT;
103
104
  export declare type LastSync = Partial<Record<OperationType, number | undefined>>;
104
105
  export declare type HttpErrors = Partial<Record<OperationType, {
105
106
  [statusCode: string]: number;
@@ -136,8 +137,9 @@ export declare type TelemetryUsageStats = {
136
137
  mE?: MethodExceptions;
137
138
  };
138
139
  export declare type UpdatesFromSSE = {
139
- sp: number;
140
+ sp?: number;
140
141
  ms?: number;
142
+ mls?: number;
141
143
  };
142
144
  export declare type TelemetryUsageStatsPayload = TelemetryUsageStats & {
143
145
  lS: LastSync;
@@ -151,6 +153,8 @@ export declare type TelemetryUsageStatsPayload = TelemetryUsageStats & {
151
153
  spC?: number;
152
154
  seC?: number;
153
155
  skC?: number;
156
+ lseC?: number;
157
+ lskC?: number;
154
158
  sL?: number;
155
159
  eQ: number;
156
160
  eD: number;
@@ -173,6 +177,7 @@ export declare type RefreshRates = {
173
177
  sp: number;
174
178
  se?: number;
175
179
  ms?: number;
180
+ mls?: number;
176
181
  im: number;
177
182
  ev: number;
178
183
  te: number;
@@ -193,6 +198,7 @@ export declare type TelemetryConfigStats = {
193
198
  };
194
199
  export declare type TelemetryConfigStatsPayload = TelemetryConfigStats & {
195
200
  sE: boolean;
201
+ lE?: boolean;
196
202
  rR: RefreshRates;
197
203
  uO: UrlOverrides;
198
204
  iQ: number;
package/types/types.d.ts CHANGED
@@ -80,6 +80,7 @@ export interface ISettings {
80
80
  metricsRefreshRate?: number;
81
81
  telemetryRefreshRate: number;
82
82
  segmentsRefreshRate: number;
83
+ largeSegmentsRefreshRate: number;
83
84
  offlineRefreshRate: number;
84
85
  eventsPushRate: number;
85
86
  eventsQueueSize: number;
@@ -90,6 +91,7 @@ export interface ISettings {
90
91
  requestTimeoutBeforeReady: number;
91
92
  retriesOnFailureBeforeReady: number;
92
93
  eventsFirstPushWindow: number;
94
+ waitForLargeSegments: boolean;
93
95
  };
94
96
  readonly storage: IStorageSyncFactory | IStorageAsyncFactory;
95
97
  readonly integrations: Array<{
@@ -113,6 +115,7 @@ export interface ISettings {
113
115
  __splitFiltersValidation: ISplitFiltersValidation;
114
116
  localhostMode?: SplitIO.LocalhostFactory;
115
117
  enabled: boolean;
118
+ largeSegmentsEnabled: boolean;
116
119
  flagSpecVersion: string;
117
120
  };
118
121
  readonly runtime: {
@@ -810,6 +813,13 @@ export declare namespace SplitIO {
810
813
  * @default 10
811
814
  */
812
815
  eventsFirstPushWindow?: number;
816
+ /**
817
+ * Whether the SDK should wait for large segments to be ready before emitting SDK_READY event.
818
+ * It only applies if largeSegmentsEnabled is true.
819
+ * @property {number} waitForLargeSegments
820
+ * @default true
821
+ */
822
+ waitForLargeSegments?: boolean;
813
823
  };
814
824
  /**
815
825
  * SDK scheduler settings.
@@ -854,6 +864,13 @@ export declare namespace SplitIO {
854
864
  * @default 60
855
865
  */
856
866
  segmentsRefreshRate?: number;
867
+ /**
868
+ * The SDK polls Split servers for changes to large segment definitions. This parameter controls this polling period in seconds.
869
+ * It only applies if largeSegmentsEnabled is true.
870
+ * @property {number} largeSegmentsRefreshRate
871
+ * @default 60
872
+ */
873
+ largeSegmentsRefreshRate?: number;
857
874
  /**
858
875
  * The SDK posts the queued events data in bulks. This parameter controls the posting rate in seconds.
859
876
  * @property {number} eventsPushRate
@@ -926,6 +943,14 @@ export declare namespace SplitIO {
926
943
  * @property {Object} urls
927
944
  */
928
945
  urls?: UrlSettings;
946
+ sync?: ISharedSettings['sync'] & {
947
+ /**
948
+ * Enables synchronization of large segments.
949
+ * @property {boolean} largeSegmentsEnabled
950
+ * @default false
951
+ */
952
+ largeSegmentsEnabled?: boolean;
953
+ };
929
954
  }
930
955
  /**
931
956
  * Settings interface for SDK instances created on NodeJS.
@@ -53,6 +53,7 @@ export declare const TELEMETRY = "te";
53
53
  export declare const TOKEN = "to";
54
54
  export declare const SEGMENT = "se";
55
55
  export declare const MY_SEGMENT = "ms";
56
+ export declare const MY_LARGE_SEGMENT = "mls";
56
57
  export declare const TREATMENT = "t";
57
58
  export declare const TREATMENTS = "ts";
58
59
  export declare const TREATMENT_WITH_CONFIG = "tc";
@@ -79,3 +80,5 @@ export declare const DISABLED = 0;
79
80
  export declare const ENABLED = 1;
80
81
  export declare const PAUSED = 2;
81
82
  export declare const FLAG_SPEC_VERSION = "1.1";
83
+ export declare const IN_SEGMENT = "IN_SEGMENT";
84
+ export declare const IN_LARGE_SEGMENT = "IN_LARGE_SEGMENT";
@@ -12,6 +12,7 @@ export declare const base: {
12
12
  scheduler: {
13
13
  featuresRefreshRate: number;
14
14
  segmentsRefreshRate: number;
15
+ largeSegmentsRefreshRate: number;
15
16
  telemetryRefreshRate: number;
16
17
  impressionsRefreshRate: number;
17
18
  offlineRefreshRate: number;
@@ -39,6 +40,7 @@ export declare const base: {
39
40
  localhostMode: undefined;
40
41
  enabled: boolean;
41
42
  flagSpecVersion: string;
43
+ largeSegmentsEnabled: boolean;
42
44
  };
43
45
  log: undefined;
44
46
  };
@@ -28,7 +28,7 @@ export interface ISettingsValidationParams {
28
28
  /** Localhost mode validator (`settings.sync.localhostMode`) */
29
29
  localhost?: (settings: ISettings) => ISettings['sync']['localhostMode'];
30
30
  /** User consent validator (`settings.userConsent`) */
31
- consent: (settings: ISettings) => ISettings['userConsent'];
31
+ consent?: (settings: ISettings) => ISettings['userConsent'];
32
32
  /** Flag spec version validation. Configurable by the JS Synchronizer but not by the SDKs */
33
33
  flagSpec?: (settings: ISettings) => ISettings['sync']['flagSpecVersion'];
34
34
  }