@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.
- package/cjs/sync/streaming/SSEClient/index.js +4 -0
- package/cjs/sync/submitters/telemetrySubmitter.js +4 -2
- package/cjs/utils/constants/index.js +1 -1
- package/esm/sync/streaming/SSEClient/index.js +5 -1
- package/esm/sync/submitters/telemetrySubmitter.js +4 -2
- package/esm/utils/constants/index.js +1 -1
- package/package.json +1 -1
- package/src/sync/streaming/SSEClient/index.ts +6 -1
- package/src/sync/submitters/telemetrySubmitter.ts +4 -2
- package/src/sync/submitters/types.ts +2 -1
- package/src/utils/constants/index.ts +1 -1
- package/types/sync/streaming/SSEClient/index.d.ts +1 -0
- package/types/sync/submitters/types.d.ts +2 -1
- package/types/utils/constants/index.d.ts +1 -1
|
@@ -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
|
-
|
|
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,
|
|
@@ -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.
|
|
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
|
-
|
|
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,
|
|
@@ -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.
|
|
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,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
|
-
|
|
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
|
|
@@ -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;
|
|
@@ -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.
|
|
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";
|