@splitsoftware/splitio-commons 1.3.1-rc.0 → 1.3.2-rc.0
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/CHANGES.txt +2 -1
- package/cjs/consent/sdkUserConsent.js +1 -1
- package/cjs/listeners/browser.js +5 -4
- package/cjs/logger/constants.js +2 -1
- package/cjs/logger/messages/error.js +2 -1
- package/cjs/logger/messages/info.js +3 -3
- package/cjs/logger/messages/warn.js +2 -2
- package/cjs/sdkClient/client.js +17 -3
- package/cjs/sdkClient/sdkClient.js +4 -1
- package/cjs/sdkFactory/index.js +16 -19
- package/cjs/services/splitApi.js +15 -14
- package/cjs/services/splitHttpClient.js +15 -13
- package/cjs/storages/AbstractSegmentsCacheSync.js +0 -5
- package/cjs/storages/KeyBuilderSS.js +12 -19
- package/cjs/storages/findLatencyIndex.js +11 -6
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +13 -1
- package/cjs/storages/inLocalStorage/index.js +4 -1
- package/cjs/storages/inMemory/InMemoryStorage.js +2 -0
- package/cjs/storages/inMemory/InMemoryStorageCS.js +3 -0
- package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +6 -0
- package/cjs/storages/inMemory/SegmentsCacheInMemory.js +6 -0
- package/cjs/storages/inMemory/TelemetryCacheInMemory.js +165 -0
- package/cjs/storages/inRedis/TelemetryCacheInRedis.js +29 -0
- package/cjs/storages/inRedis/index.js +2 -4
- package/cjs/storages/pluggable/TelemetryCachePluggable.js +27 -0
- package/cjs/storages/pluggable/index.js +2 -1
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +0 -3
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +1 -8
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +1 -4
- package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +20 -13
- package/cjs/sync/streaming/SSEHandler/index.js +21 -15
- package/cjs/sync/streaming/pushManager.js +7 -4
- package/cjs/sync/submitters/eventsSubmitter.js +28 -0
- package/cjs/sync/submitters/{impressionCountsSyncTask.js → impressionCountsSubmitter.js} +10 -7
- package/cjs/sync/submitters/{impressionsSyncTask.js → impressionsSubmitter.js} +8 -8
- package/cjs/sync/submitters/{submitterSyncTask.js → submitter.js} +34 -13
- package/cjs/sync/submitters/submitterManager.js +12 -10
- package/cjs/sync/submitters/telemetrySubmitter.js +128 -0
- package/cjs/sync/syncManagerOnline.js +6 -2
- package/cjs/trackers/eventTracker.js +5 -1
- package/cjs/trackers/impressionsTracker.js +11 -3
- package/cjs/trackers/telemetryTracker.js +63 -0
- package/cjs/utils/constants/index.js +40 -1
- package/cjs/utils/inputValidation/apiKey.js +12 -11
- package/cjs/utils/settingsValidation/index.js +20 -6
- package/cjs/utils/settingsValidation/url.js +4 -0
- package/cjs/utils/timeTracker/index.js +1 -0
- package/cjs/utils/timeTracker/timer.js +2 -2
- package/esm/consent/sdkUserConsent.js +1 -1
- package/esm/listeners/browser.js +3 -2
- package/esm/logger/constants.js +1 -0
- package/esm/logger/messages/error.js +2 -1
- package/esm/logger/messages/info.js +3 -3
- package/esm/logger/messages/warn.js +2 -2
- package/esm/sdkClient/client.js +18 -4
- package/esm/sdkClient/sdkClient.js +4 -1
- package/esm/sdkFactory/index.js +16 -19
- package/esm/services/splitApi.js +15 -14
- package/esm/services/splitHttpClient.js +15 -13
- package/esm/storages/AbstractSegmentsCacheSync.js +0 -5
- package/esm/storages/KeyBuilderSS.js +12 -19
- package/esm/storages/findLatencyIndex.js +11 -6
- package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +13 -1
- package/esm/storages/inLocalStorage/index.js +5 -2
- package/esm/storages/inMemory/InMemoryStorage.js +3 -1
- package/esm/storages/inMemory/InMemoryStorageCS.js +4 -1
- package/esm/storages/inMemory/MySegmentsCacheInMemory.js +6 -0
- package/esm/storages/inMemory/SegmentsCacheInMemory.js +6 -0
- package/esm/storages/inMemory/TelemetryCacheInMemory.js +161 -0
- package/esm/storages/inRedis/TelemetryCacheInRedis.js +26 -0
- package/esm/storages/inRedis/index.js +2 -4
- package/esm/storages/pluggable/TelemetryCachePluggable.js +24 -0
- package/esm/storages/pluggable/index.js +2 -1
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +0 -3
- package/esm/sync/polling/updaters/segmentChangesUpdater.js +1 -8
- package/esm/sync/polling/updaters/splitChangesUpdater.js +1 -4
- package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +8 -1
- package/esm/sync/streaming/SSEHandler/index.js +21 -15
- package/esm/sync/streaming/pushManager.js +7 -4
- package/esm/sync/submitters/eventsSubmitter.js +24 -0
- package/esm/sync/submitters/{impressionCountsSyncTask.js → impressionCountsSubmitter.js} +8 -5
- package/esm/sync/submitters/{impressionsSyncTask.js → impressionsSubmitter.js} +6 -6
- package/esm/sync/submitters/submitter.js +60 -0
- package/esm/sync/submitters/submitterManager.js +12 -10
- package/esm/sync/submitters/telemetrySubmitter.js +122 -0
- package/esm/sync/syncManagerOnline.js +6 -2
- package/esm/trackers/eventTracker.js +6 -2
- package/esm/trackers/impressionsTracker.js +12 -4
- package/esm/trackers/telemetryTracker.js +59 -0
- package/esm/utils/constants/index.js +38 -0
- package/esm/utils/inputValidation/apiKey.js +2 -1
- package/esm/utils/settingsValidation/index.js +18 -4
- package/esm/utils/settingsValidation/url.js +4 -0
- package/esm/utils/timeTracker/index.js +1 -0
- package/esm/utils/timeTracker/timer.js +2 -2
- package/package.json +1 -1
- package/src/consent/sdkUserConsent.ts +1 -1
- package/src/listeners/browser.ts +3 -2
- package/src/logger/constants.ts +1 -0
- package/src/logger/messages/error.ts +2 -1
- package/src/logger/messages/info.ts +3 -3
- package/src/logger/messages/warn.ts +2 -2
- package/src/sdkClient/client.ts +23 -4
- package/src/sdkClient/sdkClient.ts +4 -1
- package/src/sdkFactory/index.ts +22 -24
- package/src/sdkFactory/types.ts +31 -14
- package/src/services/splitApi.ts +17 -14
- package/src/services/splitHttpClient.ts +15 -14
- package/src/services/types.ts +7 -5
- package/src/storages/AbstractSegmentsCacheSync.ts +8 -3
- package/src/storages/KeyBuilderSS.ts +13 -50
- package/src/storages/findLatencyIndex.ts +12 -3
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +13 -1
- package/src/storages/inLocalStorage/index.ts +5 -2
- package/src/storages/inMemory/InMemoryStorage.ts +3 -1
- package/src/storages/inMemory/InMemoryStorageCS.ts +4 -1
- package/src/storages/inMemory/MySegmentsCacheInMemory.ts +8 -0
- package/src/storages/inMemory/SegmentsCacheInMemory.ts +6 -0
- package/src/storages/inMemory/TelemetryCacheInMemory.ts +210 -0
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +29 -0
- package/src/storages/inRedis/index.ts +2 -4
- package/src/storages/pluggable/TelemetryCachePluggable.ts +26 -0
- package/src/storages/pluggable/index.ts +2 -1
- package/src/storages/types.ts +84 -32
- package/src/sync/offline/syncManagerOffline.ts +4 -3
- package/src/sync/polling/pollingManagerCS.ts +2 -2
- package/src/sync/polling/pollingManagerSS.ts +2 -2
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +0 -4
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +2 -10
- package/src/sync/polling/updaters/splitChangesUpdater.ts +1 -5
- package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +11 -1
- package/src/sync/streaming/SSEHandler/index.ts +21 -14
- package/src/sync/streaming/pushManager.ts +11 -7
- package/src/sync/submitters/eventsSubmitter.ts +35 -0
- package/src/sync/submitters/{impressionCountsSyncTask.ts → impressionCountsSubmitter.ts} +15 -15
- package/src/sync/submitters/{impressionsSyncTask.ts → impressionsSubmitter.ts} +12 -16
- package/src/sync/submitters/{submitterSyncTask.ts → submitter.ts} +33 -15
- package/src/sync/submitters/submitterManager.ts +14 -11
- package/src/sync/submitters/telemetrySubmitter.ts +143 -0
- package/src/sync/submitters/types.ts +123 -0
- package/src/sync/syncManagerOnline.ts +13 -7
- package/src/sync/types.ts +0 -15
- package/src/trackers/eventTracker.ts +7 -3
- package/src/trackers/impressionsTracker.ts +13 -5
- package/src/trackers/telemetryTracker.ts +63 -0
- package/src/trackers/types.ts +24 -0
- package/src/types.ts +35 -6
- package/src/utils/constants/index.ts +45 -0
- package/src/utils/inputValidation/apiKey.ts +2 -1
- package/src/utils/settingsValidation/index.ts +18 -4
- package/src/utils/settingsValidation/url.ts +4 -0
- package/src/utils/timeTracker/index.ts +1 -1
- package/src/utils/timeTracker/timer.ts +3 -3
- package/types/logger/constants.d.ts +1 -0
- package/types/sdkFactory/types.d.ts +28 -13
- package/types/services/splitApi.d.ts +2 -1
- package/types/services/types.d.ts +8 -5
- package/types/storages/AbstractSegmentsCacheSync.d.ts +7 -3
- package/types/storages/KeyBuilderSS.d.ts +3 -3
- package/types/storages/findLatencyIndex.d.ts +7 -1
- package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +2 -0
- package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +2 -0
- package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +1 -0
- package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +6 -2
- package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +6 -8
- package/types/storages/pluggable/TelemetryCachePluggable.d.ts +4 -6
- package/types/storages/types.d.ts +71 -22
- package/types/sync/offline/syncManagerOffline.d.ts +3 -2
- package/types/sync/polling/pollingManagerCS.d.ts +2 -2
- package/types/sync/polling/pollingManagerSS.d.ts +2 -2
- package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +2 -1
- package/types/sync/streaming/SSEHandler/index.d.ts +2 -1
- package/types/sync/streaming/pushManager.d.ts +2 -2
- package/types/sync/submitters/eventsSubmitter.d.ts +5 -0
- package/types/sync/submitters/impressionCountsSubmitter.d.ts +10 -0
- package/types/sync/submitters/impressionsSubmitter.d.ts +11 -0
- package/types/sync/submitters/submitter.d.ts +12 -0
- package/types/sync/submitters/submitterManager.d.ts +2 -2
- package/types/sync/submitters/telemetrySubmitter.d.ts +24 -0
- package/types/sync/submitters/telemetrySyncTask.d.ts +0 -27
- package/types/sync/submitters/types.d.ts +107 -0
- package/types/sync/syncManagerOnline.d.ts +3 -2
- package/types/sync/types.d.ts +0 -13
- package/types/trackers/eventTracker.d.ts +2 -2
- package/types/trackers/impressionsTracker.d.ts +2 -2
- package/types/trackers/telemetryTracker.d.ts +3 -0
- package/types/trackers/types.d.ts +22 -0
- package/types/types.d.ts +33 -4
- package/types/utils/constants/index.d.ts +37 -0
- package/types/utils/inputValidation/apiKey.d.ts +1 -0
- package/types/utils/settingsValidation/index.d.ts +40 -0
- package/types/utils/timeTracker/index.d.ts +1 -1
- package/types/utils/timeTracker/timer.d.ts +1 -1
- package/cjs/storages/inMemory/CountsCacheInMemory.js +0 -38
- package/cjs/storages/inMemory/LatenciesCacheInMemory.js +0 -43
- package/cjs/storages/inRedis/CountsCacheInRedis.js +0 -16
- package/cjs/storages/inRedis/LatenciesCacheInRedis.js +0 -18
- package/cjs/sync/submitters/eventsSyncTask.js +0 -44
- package/cjs/sync/submitters/metricsSyncTask.js +0 -31
- package/esm/storages/inMemory/CountsCacheInMemory.js +0 -35
- package/esm/storages/inMemory/LatenciesCacheInMemory.js +0 -40
- package/esm/storages/inRedis/CountsCacheInRedis.js +0 -13
- package/esm/storages/inRedis/LatenciesCacheInRedis.js +0 -15
- package/esm/sync/submitters/eventsSyncTask.js +0 -40
- package/esm/sync/submitters/metricsSyncTask.js +0 -26
- package/esm/sync/submitters/submitterSyncTask.js +0 -40
- package/src/storages/inMemory/CountsCacheInMemory.ts +0 -37
- package/src/storages/inMemory/LatenciesCacheInMemory.ts +0 -45
- package/src/storages/inRedis/CountsCacheInRedis.ts +0 -20
- package/src/storages/inRedis/LatenciesCacheInRedis.ts +0 -23
- package/src/sync/submitters/eventsSyncTask.ts +0 -57
- package/src/sync/submitters/metricsSyncTask.ts +0 -49
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ICountsCacheSync } from '../types';
|
|
2
|
-
|
|
3
|
-
export class CountsCacheInMemory implements ICountsCacheSync {
|
|
4
|
-
|
|
5
|
-
private counters: Record<string, number> = {};
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Add counts.
|
|
9
|
-
*/
|
|
10
|
-
track(metricName: string) {
|
|
11
|
-
if (this.counters[metricName] === undefined) this.counters[metricName] = 1;
|
|
12
|
-
else this.counters[metricName]++;
|
|
13
|
-
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Clear the collector
|
|
19
|
-
*/
|
|
20
|
-
clear() {
|
|
21
|
-
this.counters = {};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Get the collected data, used as payload for posting.
|
|
26
|
-
*/
|
|
27
|
-
state() {
|
|
28
|
-
return this.counters;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Check if the cache is empty.
|
|
33
|
-
*/
|
|
34
|
-
isEmpty() {
|
|
35
|
-
return Object.keys(this.counters).length === 0;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ILatenciesCacheSync } from '../types';
|
|
2
|
-
import { findLatencyIndex } from '../findLatencyIndex';
|
|
3
|
-
|
|
4
|
-
export class LatenciesCacheInMemory implements ILatenciesCacheSync {
|
|
5
|
-
|
|
6
|
-
private counters: Record<string, number[]> = {};
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Add latencies.
|
|
10
|
-
*/
|
|
11
|
-
track(metricName: string, latency: number) {
|
|
12
|
-
// Initialize if needed
|
|
13
|
-
if (this.counters[metricName] === undefined) {
|
|
14
|
-
this.counters[metricName] = [
|
|
15
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
16
|
-
];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// +1 based on the latency number
|
|
20
|
-
this.counters[metricName][findLatencyIndex(latency)]++;
|
|
21
|
-
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Clear the collector
|
|
27
|
-
*/
|
|
28
|
-
clear() {
|
|
29
|
-
this.counters = {};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Get the collected data, used as payload for posting.
|
|
34
|
-
*/
|
|
35
|
-
state() {
|
|
36
|
-
return this.counters;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Check if the cache is empty.
|
|
41
|
-
*/
|
|
42
|
-
isEmpty() {
|
|
43
|
-
return Object.keys(this.counters).length === 0;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ICountsCacheAsync } from '../types';
|
|
2
|
-
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
|
-
import { Redis } from 'ioredis';
|
|
4
|
-
|
|
5
|
-
export class CountsCacheInRedis implements ICountsCacheAsync {
|
|
6
|
-
|
|
7
|
-
private readonly redis: Redis;
|
|
8
|
-
private readonly keys: KeyBuilderSS;
|
|
9
|
-
|
|
10
|
-
constructor(keys: KeyBuilderSS, redis: Redis) {
|
|
11
|
-
this.keys = keys;
|
|
12
|
-
this.redis = redis;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
track(metricName: string): Promise<boolean> {
|
|
16
|
-
return this.redis.incr(this.keys.buildCountKey(metricName)).catch(() => {
|
|
17
|
-
// noop, for telemetry metrics there's no need to throw.
|
|
18
|
-
}).then(() => true);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ILatenciesCacheAsync } from '../types';
|
|
2
|
-
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
|
-
import { findLatencyIndex } from '../findLatencyIndex';
|
|
4
|
-
import { Redis } from 'ioredis';
|
|
5
|
-
|
|
6
|
-
export class LatenciesCacheInRedis implements ILatenciesCacheAsync {
|
|
7
|
-
|
|
8
|
-
private readonly redis: Redis;
|
|
9
|
-
private readonly keys: KeyBuilderSS;
|
|
10
|
-
|
|
11
|
-
constructor(keys: KeyBuilderSS, redis: Redis) {
|
|
12
|
-
this.keys = keys;
|
|
13
|
-
this.redis = redis;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
track(metricName: string, latency: number): Promise<boolean> {
|
|
17
|
-
const bucketNumber = findLatencyIndex(latency);
|
|
18
|
-
|
|
19
|
-
return this.redis.incr(this.keys.buildLatencyKey(metricName, bucketNumber)).catch(() => {
|
|
20
|
-
// noop, for telemetry metrics there's no need to throw.
|
|
21
|
-
}).then(() => true);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { IEventsCacheSync } from '../../storages/types';
|
|
2
|
-
import { IPostEventsBulk } from '../../services/types';
|
|
3
|
-
import { ISyncTask, ITimeTracker } from '../types';
|
|
4
|
-
import { submitterSyncTaskFactory } from './submitterSyncTask';
|
|
5
|
-
import { ILogger } from '../../logger/types';
|
|
6
|
-
import { SUBMITTERS_PUSH_FULL_QUEUE } from '../../logger/constants';
|
|
7
|
-
|
|
8
|
-
const DATA_NAME = 'events';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Sync task that periodically posts tracked events
|
|
12
|
-
*/
|
|
13
|
-
export function eventsSyncTaskFactory(
|
|
14
|
-
log: ILogger,
|
|
15
|
-
postEventsBulk: IPostEventsBulk,
|
|
16
|
-
eventsCache: IEventsCacheSync,
|
|
17
|
-
eventsPushRate: number,
|
|
18
|
-
eventsFirstPushWindow: number,
|
|
19
|
-
latencyTracker?: ITimeTracker
|
|
20
|
-
): ISyncTask {
|
|
21
|
-
|
|
22
|
-
// don't retry events.
|
|
23
|
-
const syncTask = submitterSyncTaskFactory(log, postEventsBulk, eventsCache, eventsPushRate, DATA_NAME, latencyTracker);
|
|
24
|
-
|
|
25
|
-
// Set a timer for the first push window of events.
|
|
26
|
-
// Not implemented in the base submitter or sync task, since this feature is only used by the events submitter.
|
|
27
|
-
if (eventsFirstPushWindow > 0) {
|
|
28
|
-
let running = false;
|
|
29
|
-
let stopEventPublisherTimeout: ReturnType<typeof setTimeout>;
|
|
30
|
-
const originalStart = syncTask.start;
|
|
31
|
-
syncTask.start = () => {
|
|
32
|
-
running = true;
|
|
33
|
-
stopEventPublisherTimeout = setTimeout(originalStart, eventsFirstPushWindow);
|
|
34
|
-
};
|
|
35
|
-
const originalStop = syncTask.stop;
|
|
36
|
-
syncTask.stop = () => {
|
|
37
|
-
running = false;
|
|
38
|
-
clearTimeout(stopEventPublisherTimeout);
|
|
39
|
-
originalStop();
|
|
40
|
-
};
|
|
41
|
-
syncTask.isRunning = () => {
|
|
42
|
-
return running;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// register events submitter to be executed when events cache is full
|
|
47
|
-
eventsCache.setOnFullQueueCb(() => {
|
|
48
|
-
if (syncTask.isRunning()) {
|
|
49
|
-
log.info(SUBMITTERS_PUSH_FULL_QUEUE, [DATA_NAME]);
|
|
50
|
-
syncTask.execute();
|
|
51
|
-
}
|
|
52
|
-
// If submitter is stopped (e.g., user consent declined or unknown, or app state offline), we don't send the data.
|
|
53
|
-
// Data will be sent when submitter is resumed.
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
return syncTask;
|
|
57
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { forOwn } from '../../utils/lang';
|
|
3
|
-
import { ICountsCacheSync, ILatenciesCacheSync } from '../../storages/types';
|
|
4
|
-
import { IPostMetricsCounters, IPostMetricsTimes } from '../../services/types';
|
|
5
|
-
import { ISyncTask, ITimeTracker } from '../types';
|
|
6
|
-
import { submitterSyncTaskFactory } from './submitterSyncTask';
|
|
7
|
-
import { ILogger } from '../../logger/types';
|
|
8
|
-
|
|
9
|
-
// extract POST payload object from cache
|
|
10
|
-
function fromCache<V>(propertyName: 'latencies' | 'delta') {
|
|
11
|
-
return (data: Record<string, V>): any[] => {
|
|
12
|
-
const result: any[] = [];
|
|
13
|
-
|
|
14
|
-
forOwn(data, (value, key) => {
|
|
15
|
-
result.push({ name: key, [propertyName]: value });
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
return result;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Sync task that periodically posts telemetry counts
|
|
24
|
-
*/
|
|
25
|
-
export function countsSyncTaskFactory(
|
|
26
|
-
log: ILogger,
|
|
27
|
-
postMetricsCounters: IPostMetricsCounters,
|
|
28
|
-
countsCache: ICountsCacheSync,
|
|
29
|
-
metricsRefreshRate: number,
|
|
30
|
-
latencyTracker?: ITimeTracker
|
|
31
|
-
): ISyncTask {
|
|
32
|
-
|
|
33
|
-
return submitterSyncTaskFactory(log, postMetricsCounters, countsCache, metricsRefreshRate, 'count metrics', latencyTracker, fromCache<number>('delta'));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Sync task that periodically posts telemetry latencies
|
|
38
|
-
*/
|
|
39
|
-
export function latenciesSyncTaskFactory(
|
|
40
|
-
log: ILogger,
|
|
41
|
-
postMetricsLatencies: IPostMetricsTimes,
|
|
42
|
-
latenciesCache: ILatenciesCacheSync,
|
|
43
|
-
metricsRefreshRate: number,
|
|
44
|
-
latencyTracker?: ITimeTracker
|
|
45
|
-
): ISyncTask {
|
|
46
|
-
|
|
47
|
-
// don't retry metrics.
|
|
48
|
-
return submitterSyncTaskFactory(log, postMetricsLatencies, latenciesCache, metricsRefreshRate, 'latency metrics', latencyTracker, fromCache<number[]>('latencies'), 0, true);
|
|
49
|
-
}
|