@splitsoftware/splitio-commons 1.16.1-rc.5 → 1.16.1-rc.7

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.
@@ -47,6 +47,7 @@ var SSEClient = /** @class */ (function () {
47
47
  this.useHeaders = useHeaders;
48
48
  this.headers = buildSSEHeaders(settings);
49
49
  this.options = getOptions && getOptions(settings);
50
+ this.lse = settings.sync.largeSegmentsEnabled;
50
51
  }
51
52
  SSEClient.prototype.setEventHandler = function (handler) {
52
53
  this.handler = handler;
@@ -58,10 +59,13 @@ var SSEClient = /** @class */ (function () {
58
59
  * @throws {TypeError} Will throw an error if `authToken` is undefined
59
60
  */
60
61
  SSEClient.prototype.open = function (authToken) {
62
+ var _this = this;
61
63
  this.close(); // it closes connection if previously opened
62
64
  var channelsQueryParam = Object.keys(authToken.channels).map(function (channel) {
63
65
  var params = CONTROL_CHANNEL_REGEX.test(channel) ? '[?occupancy=metrics.publishers]' : '';
64
66
  return encodeURIComponent(params + channel);
67
+ }).filter(function (channel) {
68
+ return _this.lse || !(0, lang_1.endsWith)(channel, 'myLargeSegments');
65
69
  }).join(',');
66
70
  var url = this.streamingUrl + "?channels=" + channelsQueryParam + "&accessToken=" + authToken.token + "&v=" + ABLY_API_VERSION + "&heartbeats=true"; // same results using `&heartbeats=false`
67
71
  this.connection = new this.eventSource(
@@ -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,
@@ -91,7 +91,7 @@ exports.NON_REQUESTED = 1;
91
91
  exports.DISABLED = 0;
92
92
  exports.ENABLED = 1;
93
93
  exports.PAUSED = 2;
94
- exports.FLAG_SPEC_VERSION = '1.1';
94
+ exports.FLAG_SPEC_VERSION = '1.2';
95
95
  // Matcher types
96
96
  exports.IN_SEGMENT = 'IN_SEGMENT';
97
97
  exports.IN_LARGE_SEGMENT = 'IN_LARGE_SEGMENT';
@@ -1,4 +1,4 @@
1
- import { isString } from '../../../utils/lang';
1
+ import { endsWith, isString } from '../../../utils/lang';
2
2
  import { objectAssign } from '../../../utils/lang/objectAssign';
3
3
  var ABLY_API_VERSION = '1.1';
4
4
  var CONTROL_CHANNEL_REGEX = /^control_/;
@@ -44,6 +44,7 @@ var SSEClient = /** @class */ (function () {
44
44
  this.useHeaders = useHeaders;
45
45
  this.headers = buildSSEHeaders(settings);
46
46
  this.options = getOptions && getOptions(settings);
47
+ this.lse = settings.sync.largeSegmentsEnabled;
47
48
  }
48
49
  SSEClient.prototype.setEventHandler = function (handler) {
49
50
  this.handler = handler;
@@ -55,10 +56,13 @@ var SSEClient = /** @class */ (function () {
55
56
  * @throws {TypeError} Will throw an error if `authToken` is undefined
56
57
  */
57
58
  SSEClient.prototype.open = function (authToken) {
59
+ var _this = this;
58
60
  this.close(); // it closes connection if previously opened
59
61
  var channelsQueryParam = Object.keys(authToken.channels).map(function (channel) {
60
62
  var params = CONTROL_CHANNEL_REGEX.test(channel) ? '[?occupancy=metrics.publishers]' : '';
61
63
  return encodeURIComponent(params + channel);
64
+ }).filter(function (channel) {
65
+ return _this.lse || !endsWith(channel, 'myLargeSegments');
62
66
  }).join(',');
63
67
  var url = this.streamingUrl + "?channels=" + channelsQueryParam + "&accessToken=" + authToken.token + "&v=" + ABLY_API_VERSION + "&heartbeats=true"; // same results using `&heartbeats=false`
64
68
  this.connection = new this.eventSource(
@@ -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,
@@ -87,7 +87,7 @@ export var NON_REQUESTED = 1;
87
87
  export var DISABLED = 0;
88
88
  export var ENABLED = 1;
89
89
  export var PAUSED = 2;
90
- export var FLAG_SPEC_VERSION = '1.1';
90
+ export var FLAG_SPEC_VERSION = '1.2';
91
91
  // Matcher types
92
92
  export var IN_SEGMENT = 'IN_SEGMENT';
93
93
  export var IN_LARGE_SEGMENT = 'IN_LARGE_SEGMENT';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splitsoftware/splitio-commons",
3
- "version": "1.16.1-rc.5",
3
+ "version": "1.16.1-rc.7",
4
4
  "description": "Split JavaScript SDK common components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -1,7 +1,7 @@
1
1
  import { IPlatform } from '../../../sdkFactory/types';
2
2
  import { IEventSourceConstructor } from '../../../services/types';
3
3
  import { ISettings } from '../../../types';
4
- import { isString } from '../../../utils/lang';
4
+ import { endsWith, isString } from '../../../utils/lang';
5
5
  import { objectAssign } from '../../../utils/lang/objectAssign';
6
6
  import { IAuthTokenPushEnabled } from '../AuthClient/types';
7
7
  import { ISSEClient, ISseEventHandler } from './types';
@@ -42,6 +42,7 @@ export class SSEClient implements ISSEClient {
42
42
  useHeaders?: boolean;
43
43
  headers: Record<string, string>;
44
44
  options?: object;
45
+ lse?: boolean;
45
46
 
46
47
  /**
47
48
  * SSEClient constructor.
@@ -61,6 +62,7 @@ export class SSEClient implements ISSEClient {
61
62
  this.useHeaders = useHeaders;
62
63
  this.headers = buildSSEHeaders(settings);
63
64
  this.options = getOptions && getOptions(settings);
65
+ this.lse = settings.sync.largeSegmentsEnabled;
64
66
  }
65
67
 
66
68
  setEventHandler(handler: ISseEventHandler) {
@@ -79,7 +81,10 @@ export class SSEClient implements ISSEClient {
79
81
  const channelsQueryParam = Object.keys(authToken.channels).map((channel) => {
80
82
  const params = CONTROL_CHANNEL_REGEX.test(channel) ? '[?occupancy=metrics.publishers]' : '';
81
83
  return encodeURIComponent(params + channel);
84
+ }).filter(channel => {
85
+ return this.lse || !endsWith(channel, 'myLargeSegments');
82
86
  }).join(',');
87
+
83
88
  const url = `${this.streamingUrl}?channels=${channelsQueryParam}&accessToken=${authToken.token}&v=${ABLY_API_VERSION}&heartbeats=true`; // same results using `&heartbeats=false`
84
89
 
85
90
  this.connection = new this.eventSource!(
@@ -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
@@ -106,7 +106,7 @@ export const DISABLED = 0;
106
106
  export const ENABLED = 1;
107
107
  export const PAUSED = 2;
108
108
 
109
- export const FLAG_SPEC_VERSION = '1.1';
109
+ export const FLAG_SPEC_VERSION = '1.2';
110
110
 
111
111
  // Matcher types
112
112
  export const IN_SEGMENT = 'IN_SEGMENT';
@@ -14,6 +14,7 @@ export declare class SSEClient implements ISSEClient {
14
14
  useHeaders?: boolean;
15
15
  headers: Record<string, string>;
16
16
  options?: object;
17
+ lse?: boolean;
17
18
  /**
18
19
  * SSEClient constructor.
19
20
  *
@@ -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;
@@ -79,6 +79,6 @@ export declare const NON_REQUESTED = 1;
79
79
  export declare const DISABLED = 0;
80
80
  export declare const ENABLED = 1;
81
81
  export declare const PAUSED = 2;
82
- export declare const FLAG_SPEC_VERSION = "1.1";
82
+ export declare const FLAG_SPEC_VERSION = "1.2";
83
83
  export declare const IN_SEGMENT = "IN_SEGMENT";
84
84
  export declare const IN_LARGE_SEGMENT = "IN_LARGE_SEGMENT";