@splitsoftware/splitio-commons 1.16.1-rc.6 → 1.16.1-rc.8
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.
- package/cjs/sync/streaming/pushManager.js +2 -0
- package/cjs/sync/submitters/telemetrySubmitter.js +4 -2
- package/esm/sync/streaming/pushManager.js +2 -0
- package/esm/sync/submitters/telemetrySubmitter.js +4 -2
- package/package.json +1 -1
- package/src/services/splitApi.ts +1 -1
- package/src/services/splitHttpClient.ts +1 -1
- package/src/sync/streaming/SSEHandler/types.ts +1 -1
- package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +1 -1
- package/src/sync/streaming/pushManager.ts +2 -0
- package/src/sync/submitters/telemetrySubmitter.ts +4 -2
- package/src/sync/submitters/types.ts +2 -1
- package/types/services/splitApi.d.ts +1 -1
- package/types/services/splitHttpClient.d.ts +1 -1
- package/types/sync/submitters/types.d.ts +2 -1
|
@@ -20,6 +20,8 @@ var murmur3_1 = require("../../utils/murmur3/murmur3");
|
|
|
20
20
|
var murmur3_64_1 = require("../../utils/murmur3/murmur3_64");
|
|
21
21
|
var constants_3 = require("../../utils/constants");
|
|
22
22
|
function getDelay(parsedData, matchingKey) {
|
|
23
|
+
if (parsedData.h === 0)
|
|
24
|
+
return 0;
|
|
23
25
|
var interval = parsedData.i || 60000;
|
|
24
26
|
var seed = parsedData.s || 0;
|
|
25
27
|
return (0, murmur3_1.hash)(matchingKey, seed) % interval;
|
|
@@ -62,15 +62,17 @@ function telemetryCacheConfigAdapter(telemetry, settings) {
|
|
|
62
62
|
pop: function () {
|
|
63
63
|
var urls = settings.urls, scheduler = settings.scheduler;
|
|
64
64
|
var isClientSide = settings.core.key !== undefined;
|
|
65
|
+
var largeSegmentsEnabled = isClientSide && settings.sync.largeSegmentsEnabled;
|
|
65
66
|
var _a = getTelemetryFlagSetsStats(settings.sync.__splitFiltersValidation), flagSetsTotal = _a.flagSetsTotal, flagSetsIgnored = _a.flagSetsIgnored;
|
|
66
67
|
return (0, objectAssign_1.objectAssign)(getTelemetryConfigStats(settings.mode, settings.storage.type), {
|
|
67
68
|
sE: settings.streamingEnabled,
|
|
68
|
-
|
|
69
|
+
lsE: largeSegmentsEnabled ? largeSegmentsEnabled : undefined,
|
|
70
|
+
wls: largeSegmentsEnabled ? settings.startup.waitForLargeSegments : undefined,
|
|
69
71
|
rR: {
|
|
70
72
|
sp: scheduler.featuresRefreshRate / 1000,
|
|
71
73
|
se: isClientSide ? undefined : scheduler.segmentsRefreshRate / 1000,
|
|
72
74
|
ms: isClientSide ? scheduler.segmentsRefreshRate / 1000 : undefined,
|
|
73
|
-
mls:
|
|
75
|
+
mls: largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
|
|
74
76
|
im: scheduler.impressionsRefreshRate / 1000,
|
|
75
77
|
ev: scheduler.eventsPushRate / 1000,
|
|
76
78
|
te: scheduler.telemetryRefreshRate / 1000,
|
|
@@ -17,6 +17,8 @@ import { hash } from '../../utils/murmur3/murmur3';
|
|
|
17
17
|
import { hash64 } from '../../utils/murmur3/murmur3_64';
|
|
18
18
|
import { TOKEN_REFRESH, AUTH_REJECTION, MY_LARGE_SEGMENT, MY_SEGMENT } from '../../utils/constants';
|
|
19
19
|
export function getDelay(parsedData, matchingKey) {
|
|
20
|
+
if (parsedData.h === 0)
|
|
21
|
+
return 0;
|
|
20
22
|
var interval = parsedData.i || 60000;
|
|
21
23
|
var seed = parsedData.s || 0;
|
|
22
24
|
return hash(matchingKey, seed) % interval;
|
|
@@ -58,15 +58,17 @@ export function telemetryCacheConfigAdapter(telemetry, settings) {
|
|
|
58
58
|
pop: function () {
|
|
59
59
|
var urls = settings.urls, scheduler = settings.scheduler;
|
|
60
60
|
var isClientSide = settings.core.key !== undefined;
|
|
61
|
+
var largeSegmentsEnabled = isClientSide && settings.sync.largeSegmentsEnabled;
|
|
61
62
|
var _a = getTelemetryFlagSetsStats(settings.sync.__splitFiltersValidation), flagSetsTotal = _a.flagSetsTotal, flagSetsIgnored = _a.flagSetsIgnored;
|
|
62
63
|
return objectAssign(getTelemetryConfigStats(settings.mode, settings.storage.type), {
|
|
63
64
|
sE: settings.streamingEnabled,
|
|
64
|
-
|
|
65
|
+
lsE: largeSegmentsEnabled ? largeSegmentsEnabled : undefined,
|
|
66
|
+
wls: largeSegmentsEnabled ? settings.startup.waitForLargeSegments : undefined,
|
|
65
67
|
rR: {
|
|
66
68
|
sp: scheduler.featuresRefreshRate / 1000,
|
|
67
69
|
se: isClientSide ? undefined : scheduler.segmentsRefreshRate / 1000,
|
|
68
70
|
ms: isClientSide ? scheduler.segmentsRefreshRate / 1000 : undefined,
|
|
69
|
-
mls:
|
|
71
|
+
mls: largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
|
|
70
72
|
im: scheduler.impressionsRefreshRate / 1000,
|
|
71
73
|
ev: scheduler.eventsPushRate / 1000,
|
|
72
74
|
te: scheduler.telemetryRefreshRate / 1000,
|
package/package.json
CHANGED
package/src/services/splitApi.ts
CHANGED
|
@@ -12,7 +12,7 @@ const messageNoFetch = 'Global fetch API is not available.';
|
|
|
12
12
|
* @param settings SDK settings, used to access authorizationKey, logger instance and metadata (SDK version, ip and hostname) to set additional headers
|
|
13
13
|
* @param platform object containing environment-specific dependencies
|
|
14
14
|
*/
|
|
15
|
-
export function splitHttpClientFactory(settings: ISettings, { getOptions, getFetch }: IPlatform): ISplitHttpClient {
|
|
15
|
+
export function splitHttpClientFactory(settings: ISettings, { getOptions, getFetch }: Pick<IPlatform, 'getOptions' | 'getFetch'>): ISplitHttpClient {
|
|
16
16
|
|
|
17
17
|
const { log, core: { authorizationKey }, version, runtime: { ip, hostname } } = settings;
|
|
18
18
|
const options = getOptions && getOptions(settings);
|
|
@@ -43,7 +43,7 @@ export interface IMyLargeSegmentsUpdateData {
|
|
|
43
43
|
d: string,
|
|
44
44
|
u: UpdateStrategy,
|
|
45
45
|
i?: number, // time interval in millis
|
|
46
|
-
h?: number, // hash function
|
|
46
|
+
h?: number, // hash function
|
|
47
47
|
s?: number, // seed for hash function
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -36,7 +36,7 @@ export function MySegmentsUpdateWorker(mySegmentsSyncTask: IMySegmentsSyncTask,
|
|
|
36
36
|
|
|
37
37
|
syncTask.then((result) => {
|
|
38
38
|
if (!isHandlingEvent) return; // halt if `stop` has been called
|
|
39
|
-
if (result !== false) {// Unlike `Splits|SegmentsUpdateWorker`, we cannot use `mySegmentsCache.getChangeNumber` since `/mySegments` endpoint doesn't provide this value.
|
|
39
|
+
if (result !== false) { // Unlike `Splits|SegmentsUpdateWorker`, we cannot use `mySegmentsCache.getChangeNumber` since `/mySegments` endpoint doesn't provide this value.
|
|
40
40
|
if (_segmentsData) telemetryTracker.trackUpdatesFromSSE(updateType);
|
|
41
41
|
currentChangeNumber = Math.max(currentChangeNumber, currentMaxChangeNumber); // use `currentMaxChangeNumber`, in case that `maxChangeNumber` was updated during fetch.
|
|
42
42
|
}
|
|
@@ -23,6 +23,8 @@ import { TOKEN_REFRESH, AUTH_REJECTION, MY_LARGE_SEGMENT, MY_SEGMENT } from '../
|
|
|
23
23
|
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
|
|
24
24
|
|
|
25
25
|
export function getDelay(parsedData: Pick<IMyLargeSegmentsUpdateData, 'i' | 'h' | 's'>, matchingKey: string) {
|
|
26
|
+
if (parsedData.h === 0) return 0;
|
|
27
|
+
|
|
26
28
|
const interval = parsedData.i || 60000;
|
|
27
29
|
const seed = parsedData.s || 0;
|
|
28
30
|
|
|
@@ -71,17 +71,19 @@ export function telemetryCacheConfigAdapter(telemetry: ITelemetryCacheSync, sett
|
|
|
71
71
|
pop(): TelemetryConfigStatsPayload {
|
|
72
72
|
const { urls, scheduler } = settings;
|
|
73
73
|
const isClientSide = settings.core.key !== undefined;
|
|
74
|
+
const largeSegmentsEnabled = isClientSide && settings.sync.largeSegmentsEnabled;
|
|
74
75
|
|
|
75
76
|
const { flagSetsTotal, flagSetsIgnored } = getTelemetryFlagSetsStats(settings.sync.__splitFiltersValidation);
|
|
76
77
|
|
|
77
78
|
return objectAssign(getTelemetryConfigStats(settings.mode, settings.storage.type), {
|
|
78
79
|
sE: settings.streamingEnabled,
|
|
79
|
-
|
|
80
|
+
lsE: largeSegmentsEnabled ? largeSegmentsEnabled : undefined,
|
|
81
|
+
wls: largeSegmentsEnabled ? settings.startup.waitForLargeSegments : undefined,
|
|
80
82
|
rR: {
|
|
81
83
|
sp: scheduler.featuresRefreshRate / 1000,
|
|
82
84
|
se: isClientSide ? undefined : scheduler.segmentsRefreshRate / 1000,
|
|
83
85
|
ms: isClientSide ? scheduler.segmentsRefreshRate / 1000 : undefined,
|
|
84
|
-
mls:
|
|
86
|
+
mls: largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
|
|
85
87
|
im: scheduler.impressionsRefreshRate / 1000,
|
|
86
88
|
ev: scheduler.eventsPushRate / 1000,
|
|
87
89
|
te: scheduler.telemetryRefreshRate / 1000,
|
|
@@ -231,7 +231,8 @@ export type TelemetryConfigStats = {
|
|
|
231
231
|
// 'metrics/config' JSON request body
|
|
232
232
|
export type TelemetryConfigStatsPayload = TelemetryConfigStats & {
|
|
233
233
|
sE: boolean, // streamingEnabled
|
|
234
|
-
|
|
234
|
+
lsE?: boolean, // largeSegmentsEnabled
|
|
235
|
+
wls?: boolean, // waitForLargeSegments
|
|
235
236
|
rR: RefreshRates, // refreshRates
|
|
236
237
|
uO: UrlOverrides, // urlOverrides
|
|
237
238
|
iQ: number, // impressionsQueueSize
|
|
@@ -9,4 +9,4 @@ import { ITelemetryTracker } from '../trackers/types';
|
|
|
9
9
|
* @param platform object containing environment-specific dependencies
|
|
10
10
|
* @param telemetryTracker telemetry tracker
|
|
11
11
|
*/
|
|
12
|
-
export declare function splitApiFactory(settings: ISettings, platform: IPlatform, telemetryTracker: ITelemetryTracker): ISplitApi;
|
|
12
|
+
export declare function splitApiFactory(settings: ISettings, platform: Pick<IPlatform, 'getOptions' | 'getFetch'>, telemetryTracker: ITelemetryTracker): ISplitApi;
|
|
@@ -7,4 +7,4 @@ import { IPlatform } from '../sdkFactory/types';
|
|
|
7
7
|
* @param settings SDK settings, used to access authorizationKey, logger instance and metadata (SDK version, ip and hostname) to set additional headers
|
|
8
8
|
* @param platform object containing environment-specific dependencies
|
|
9
9
|
*/
|
|
10
|
-
export declare function splitHttpClientFactory(settings: ISettings, { getOptions, getFetch }: IPlatform): ISplitHttpClient;
|
|
10
|
+
export declare function splitHttpClientFactory(settings: ISettings, { getOptions, getFetch }: Pick<IPlatform, 'getOptions' | 'getFetch'>): ISplitHttpClient;
|
|
@@ -198,7 +198,8 @@ export declare type TelemetryConfigStats = {
|
|
|
198
198
|
};
|
|
199
199
|
export declare type TelemetryConfigStatsPayload = TelemetryConfigStats & {
|
|
200
200
|
sE: boolean;
|
|
201
|
-
|
|
201
|
+
lsE?: boolean;
|
|
202
|
+
wls?: boolean;
|
|
202
203
|
rR: RefreshRates;
|
|
203
204
|
uO: UrlOverrides;
|
|
204
205
|
iQ: number;
|