@splitsoftware/splitio-commons 1.3.2-rc.2 → 1.3.2-rc.3
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/readiness/sdkReadinessManager.js +7 -7
- package/cjs/sync/submitters/telemetrySubmitter.js +2 -1
- package/esm/readiness/sdkReadinessManager.js +7 -7
- package/esm/sync/submitters/telemetrySubmitter.js +2 -1
- package/package.json +1 -1
- package/src/readiness/sdkReadinessManager.ts +7 -5
- package/src/readiness/types.ts +7 -1
- package/src/sync/submitters/telemetrySubmitter.ts +2 -1
- package/types/readiness/sdkReadinessManager.d.ts +1 -3
- package/types/readiness/types.d.ts +6 -1
|
@@ -13,15 +13,13 @@ var REMOVE_LISTENER_EVENT = 'removeListener';
|
|
|
13
13
|
* It also updates logs related warnings and errors.
|
|
14
14
|
*
|
|
15
15
|
* @param readyTimeout time in millis to emit SDK_READY_TIME_OUT event
|
|
16
|
-
* @param internalReadyCbCount offset value of SDK_READY listeners that are added/removed internally
|
|
17
|
-
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
|
|
18
16
|
* @param readinessManager optional readinessManager to use. only used internally for `shared` method
|
|
19
17
|
*/
|
|
20
|
-
function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout,
|
|
18
|
+
function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager) {
|
|
21
19
|
if (readyTimeout === void 0) { readyTimeout = 0; }
|
|
22
|
-
if (internalReadyCbCount === void 0) { internalReadyCbCount = 0; }
|
|
23
20
|
if (readinessManager === void 0) { readinessManager = (0, readinessManager_1.readinessManagerFactory)(EventEmitter, readyTimeout); }
|
|
24
21
|
/** Ready callback warning */
|
|
22
|
+
var internalReadyCbCount = 0;
|
|
25
23
|
var readyCbCount = 0;
|
|
26
24
|
readinessManager.gate.on(REMOVE_LISTENER_EVENT, function (event) {
|
|
27
25
|
if (event === constants_1.SDK_READY)
|
|
@@ -62,10 +60,12 @@ function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalRea
|
|
|
62
60
|
}
|
|
63
61
|
return {
|
|
64
62
|
readinessManager: readinessManager,
|
|
65
|
-
shared: function (readyTimeout
|
|
63
|
+
shared: function (readyTimeout) {
|
|
66
64
|
if (readyTimeout === void 0) { readyTimeout = 0; }
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager.shared(readyTimeout));
|
|
66
|
+
},
|
|
67
|
+
incInternalReadyCbCount: function () {
|
|
68
|
+
internalReadyCbCount++;
|
|
69
69
|
},
|
|
70
70
|
sdkStatus: (0, objectAssign_1.objectAssign)(
|
|
71
71
|
// Expose Event Emitter functionality
|
|
@@ -109,12 +109,13 @@ function telemetrySubmitterFactory(params) {
|
|
|
109
109
|
var _a = params.storage, splits = _a.splits, segments = _a.segments, telemetry = _a.telemetry;
|
|
110
110
|
if (!telemetry)
|
|
111
111
|
return; // No submitter created if telemetry cache is not defined
|
|
112
|
-
var settings = params.settings, _b = params.settings, log = _b.log, telemetryRefreshRate = _b.scheduler.telemetryRefreshRate, splitApi = params.splitApi, now = params.platform.now, readiness = params.readiness;
|
|
112
|
+
var settings = params.settings, _b = params.settings, log = _b.log, telemetryRefreshRate = _b.scheduler.telemetryRefreshRate, splitApi = params.splitApi, now = params.platform.now, readiness = params.readiness, sdkReadinessManager = params.sdkReadinessManager;
|
|
113
113
|
var startTime = (0, timer_1.timer)(now || Date.now);
|
|
114
114
|
var submitter = (0, submitter_1.firstPushWindowDecorator)((0, submitter_1.submitterFactory)(log, splitApi.postMetricsUsage, telemetryCacheStatsAdapter(telemetry, splits, segments), telemetryRefreshRate, 'telemetry stats', undefined, 0, true), telemetryRefreshRate);
|
|
115
115
|
readiness.gate.once(constants_2.SDK_READY_FROM_CACHE, function () {
|
|
116
116
|
telemetry.recordTimeUntilReadyFromCache(startTime());
|
|
117
117
|
});
|
|
118
|
+
sdkReadinessManager.incInternalReadyCbCount();
|
|
118
119
|
readiness.gate.once(constants_2.SDK_READY, function () {
|
|
119
120
|
telemetry.recordTimeUntilReady(startTime());
|
|
120
121
|
// Post config data when the SDK is ready and if the telemetry submitter was started
|
|
@@ -10,15 +10,13 @@ var REMOVE_LISTENER_EVENT = 'removeListener';
|
|
|
10
10
|
* It also updates logs related warnings and errors.
|
|
11
11
|
*
|
|
12
12
|
* @param readyTimeout time in millis to emit SDK_READY_TIME_OUT event
|
|
13
|
-
* @param internalReadyCbCount offset value of SDK_READY listeners that are added/removed internally
|
|
14
|
-
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
|
|
15
13
|
* @param readinessManager optional readinessManager to use. only used internally for `shared` method
|
|
16
14
|
*/
|
|
17
|
-
export function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout,
|
|
15
|
+
export function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager) {
|
|
18
16
|
if (readyTimeout === void 0) { readyTimeout = 0; }
|
|
19
|
-
if (internalReadyCbCount === void 0) { internalReadyCbCount = 0; }
|
|
20
17
|
if (readinessManager === void 0) { readinessManager = readinessManagerFactory(EventEmitter, readyTimeout); }
|
|
21
18
|
/** Ready callback warning */
|
|
19
|
+
var internalReadyCbCount = 0;
|
|
22
20
|
var readyCbCount = 0;
|
|
23
21
|
readinessManager.gate.on(REMOVE_LISTENER_EVENT, function (event) {
|
|
24
22
|
if (event === SDK_READY)
|
|
@@ -59,10 +57,12 @@ export function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, inte
|
|
|
59
57
|
}
|
|
60
58
|
return {
|
|
61
59
|
readinessManager: readinessManager,
|
|
62
|
-
shared: function (readyTimeout
|
|
60
|
+
shared: function (readyTimeout) {
|
|
63
61
|
if (readyTimeout === void 0) { readyTimeout = 0; }
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager.shared(readyTimeout));
|
|
63
|
+
},
|
|
64
|
+
incInternalReadyCbCount: function () {
|
|
65
|
+
internalReadyCbCount++;
|
|
66
66
|
},
|
|
67
67
|
sdkStatus: objectAssign(
|
|
68
68
|
// Expose Event Emitter functionality
|
|
@@ -104,12 +104,13 @@ export function telemetrySubmitterFactory(params) {
|
|
|
104
104
|
var _a = params.storage, splits = _a.splits, segments = _a.segments, telemetry = _a.telemetry;
|
|
105
105
|
if (!telemetry)
|
|
106
106
|
return; // No submitter created if telemetry cache is not defined
|
|
107
|
-
var settings = params.settings, _b = params.settings, log = _b.log, telemetryRefreshRate = _b.scheduler.telemetryRefreshRate, splitApi = params.splitApi, now = params.platform.now, readiness = params.readiness;
|
|
107
|
+
var settings = params.settings, _b = params.settings, log = _b.log, telemetryRefreshRate = _b.scheduler.telemetryRefreshRate, splitApi = params.splitApi, now = params.platform.now, readiness = params.readiness, sdkReadinessManager = params.sdkReadinessManager;
|
|
108
108
|
var startTime = timer(now || Date.now);
|
|
109
109
|
var submitter = firstPushWindowDecorator(submitterFactory(log, splitApi.postMetricsUsage, telemetryCacheStatsAdapter(telemetry, splits, segments), telemetryRefreshRate, 'telemetry stats', undefined, 0, true), telemetryRefreshRate);
|
|
110
110
|
readiness.gate.once(SDK_READY_FROM_CACHE, function () {
|
|
111
111
|
telemetry.recordTimeUntilReadyFromCache(startTime());
|
|
112
112
|
});
|
|
113
|
+
sdkReadinessManager.incInternalReadyCbCount();
|
|
113
114
|
readiness.gate.once(SDK_READY, function () {
|
|
114
115
|
telemetry.recordTimeUntilReady(startTime());
|
|
115
116
|
// Post config data when the SDK is ready and if the telemetry submitter was started
|
package/package.json
CHANGED
|
@@ -15,18 +15,16 @@ const REMOVE_LISTENER_EVENT = 'removeListener';
|
|
|
15
15
|
* It also updates logs related warnings and errors.
|
|
16
16
|
*
|
|
17
17
|
* @param readyTimeout time in millis to emit SDK_READY_TIME_OUT event
|
|
18
|
-
* @param internalReadyCbCount offset value of SDK_READY listeners that are added/removed internally
|
|
19
|
-
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
|
|
20
18
|
* @param readinessManager optional readinessManager to use. only used internally for `shared` method
|
|
21
19
|
*/
|
|
22
20
|
export function sdkReadinessManagerFactory(
|
|
23
21
|
log: ILogger,
|
|
24
22
|
EventEmitter: new () => IEventEmitter,
|
|
25
23
|
readyTimeout = 0,
|
|
26
|
-
internalReadyCbCount = 0,
|
|
27
24
|
readinessManager = readinessManagerFactory(EventEmitter, readyTimeout)): ISdkReadinessManager {
|
|
28
25
|
|
|
29
26
|
/** Ready callback warning */
|
|
27
|
+
let internalReadyCbCount = 0;
|
|
30
28
|
let readyCbCount = 0;
|
|
31
29
|
readinessManager.gate.on(REMOVE_LISTENER_EVENT, (event: any) => {
|
|
32
30
|
if (event === SDK_READY) readyCbCount--;
|
|
@@ -74,8 +72,12 @@ export function sdkReadinessManagerFactory(
|
|
|
74
72
|
return {
|
|
75
73
|
readinessManager,
|
|
76
74
|
|
|
77
|
-
shared(readyTimeout = 0
|
|
78
|
-
return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout,
|
|
75
|
+
shared(readyTimeout = 0) {
|
|
76
|
+
return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager.shared(readyTimeout));
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
incInternalReadyCbCount() {
|
|
80
|
+
internalReadyCbCount++;
|
|
79
81
|
},
|
|
80
82
|
|
|
81
83
|
sdkStatus: objectAssign(
|
package/src/readiness/types.ts
CHANGED
|
@@ -66,6 +66,12 @@ export interface ISdkReadinessManager {
|
|
|
66
66
|
readinessManager: IReadinessManager
|
|
67
67
|
sdkStatus: IStatusInterface
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Increment internalReadyCbCount, an offset value of SDK_READY listeners that are added/removed internally
|
|
71
|
+
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
|
|
72
|
+
*/
|
|
73
|
+
incInternalReadyCbCount(): void
|
|
74
|
+
|
|
69
75
|
/** for client-side */
|
|
70
|
-
shared(readyTimeout?: number
|
|
76
|
+
shared(readyTimeout?: number): ISdkReadinessManager
|
|
71
77
|
}
|
|
@@ -117,7 +117,7 @@ export function telemetrySubmitterFactory(params: ISdkFactoryContextSync) {
|
|
|
117
117
|
const { storage: { splits, segments, telemetry } } = params;
|
|
118
118
|
if (!telemetry) return; // No submitter created if telemetry cache is not defined
|
|
119
119
|
|
|
120
|
-
const { settings, settings: { log, scheduler: { telemetryRefreshRate } }, splitApi, platform: { now }, readiness } = params;
|
|
120
|
+
const { settings, settings: { log, scheduler: { telemetryRefreshRate } }, splitApi, platform: { now }, readiness, sdkReadinessManager } = params;
|
|
121
121
|
const startTime = timer(now || Date.now);
|
|
122
122
|
|
|
123
123
|
const submitter = firstPushWindowDecorator(
|
|
@@ -129,6 +129,7 @@ export function telemetrySubmitterFactory(params: ISdkFactoryContextSync) {
|
|
|
129
129
|
telemetry.recordTimeUntilReadyFromCache(startTime());
|
|
130
130
|
});
|
|
131
131
|
|
|
132
|
+
sdkReadinessManager.incInternalReadyCbCount();
|
|
132
133
|
readiness.gate.once(SDK_READY, () => {
|
|
133
134
|
telemetry.recordTimeUntilReady(startTime());
|
|
134
135
|
|
|
@@ -6,8 +6,6 @@ import { ILogger } from '../logger/types';
|
|
|
6
6
|
* It also updates logs related warnings and errors.
|
|
7
7
|
*
|
|
8
8
|
* @param readyTimeout time in millis to emit SDK_READY_TIME_OUT event
|
|
9
|
-
* @param internalReadyCbCount offset value of SDK_READY listeners that are added/removed internally
|
|
10
|
-
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
|
|
11
9
|
* @param readinessManager optional readinessManager to use. only used internally for `shared` method
|
|
12
10
|
*/
|
|
13
|
-
export declare function sdkReadinessManagerFactory(log: ILogger, EventEmitter: new () => IEventEmitter, readyTimeout?: number,
|
|
11
|
+
export declare function sdkReadinessManagerFactory(log: ILogger, EventEmitter: new () => IEventEmitter, readyTimeout?: number, readinessManager?: import("./types").IReadinessManager): ISdkReadinessManager;
|
|
@@ -49,7 +49,12 @@ export interface IReadinessManager {
|
|
|
49
49
|
export interface ISdkReadinessManager {
|
|
50
50
|
readinessManager: IReadinessManager;
|
|
51
51
|
sdkStatus: IStatusInterface;
|
|
52
|
+
/**
|
|
53
|
+
* Increment internalReadyCbCount, an offset value of SDK_READY listeners that are added/removed internally
|
|
54
|
+
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
|
|
55
|
+
*/
|
|
56
|
+
incInternalReadyCbCount(): void;
|
|
52
57
|
/** for client-side */
|
|
53
|
-
shared(readyTimeout?: number
|
|
58
|
+
shared(readyTimeout?: number): ISdkReadinessManager;
|
|
54
59
|
}
|
|
55
60
|
export {};
|