@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.
@@ -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
- lE: isClientSide ? settings.sync.largeSegmentsEnabled : undefined,
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: isClientSide && settings.sync.largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
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
- lE: isClientSide ? settings.sync.largeSegmentsEnabled : undefined,
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: isClientSide && settings.sync.largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splitsoftware/splitio-commons",
3
- "version": "1.16.1-rc.6",
3
+ "version": "1.16.1-rc.8",
4
4
  "description": "Split JavaScript SDK common components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -22,7 +22,7 @@ function userKeyToQueryParam(userKey: string) {
22
22
  */
23
23
  export function splitApiFactory(
24
24
  settings: ISettings,
25
- platform: IPlatform,
25
+ platform: Pick<IPlatform, 'getOptions' | 'getFetch'>,
26
26
  telemetryTracker: ITelemetryTracker
27
27
  ): ISplitApi {
28
28
 
@@ -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. 0 for murmur3_32, 1 for murmur3_64
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
- lE: isClientSide ? settings.sync.largeSegmentsEnabled : undefined,
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: isClientSide && settings.sync.largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
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
- lE?: boolean, // largeSegmentsEnabled
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
- lE?: boolean;
201
+ lsE?: boolean;
202
+ wls?: boolean;
202
203
  rR: RefreshRates;
203
204
  uO: UrlOverrides;
204
205
  iQ: number;