@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.
@@ -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, internalReadyCbCount, readinessManager) {
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, internalReadyCbCount) {
63
+ shared: function (readyTimeout) {
66
64
  if (readyTimeout === void 0) { readyTimeout = 0; }
67
- if (internalReadyCbCount === void 0) { internalReadyCbCount = 0; }
68
- return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalReadyCbCount, readinessManager.shared(readyTimeout));
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, internalReadyCbCount, readinessManager) {
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, internalReadyCbCount) {
60
+ shared: function (readyTimeout) {
63
61
  if (readyTimeout === void 0) { readyTimeout = 0; }
64
- if (internalReadyCbCount === void 0) { internalReadyCbCount = 0; }
65
- return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalReadyCbCount, readinessManager.shared(readyTimeout));
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splitsoftware/splitio-commons",
3
- "version": "1.3.2-rc.2",
3
+ "version": "1.3.2-rc.3",
4
4
  "description": "Split Javascript SDK common components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -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, internalReadyCbCount = 0) {
78
- return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalReadyCbCount, readinessManager.shared(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(
@@ -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, internalReadyCbCount?: number): ISdkReadinessManager
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, internalReadyCbCount?: number, readinessManager?: import("./types").IReadinessManager): ISdkReadinessManager;
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, internalReadyCbCount?: number): ISdkReadinessManager;
58
+ shared(readyTimeout?: number): ISdkReadinessManager;
54
59
  }
55
60
  export {};