@splitsoftware/splitio-commons 2.10.2-rc.1 → 2.10.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/sync/offline/syncTasks/fromObjectSyncTask.js +3 -2
- package/cjs/sync/polling/types.js +15 -0
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +2 -1
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +2 -1
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +2 -1
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +3 -2
- package/esm/sync/polling/types.js +14 -1
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +2 -1
- package/esm/sync/polling/updaters/segmentChangesUpdater.js +2 -1
- package/esm/sync/polling/updaters/splitChangesUpdater.js +2 -1
- package/package.json +1 -1
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +1 -1
- package/src/sync/polling/types.ts +14 -0
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +2 -1
- package/src/sync/polling/updaters/splitChangesUpdater.ts +2 -1
- package/types/splitio.d.ts +10 -15
|
@@ -6,6 +6,7 @@ var syncTask_1 = require("../../syncTask");
|
|
|
6
6
|
var constants_1 = require("../../../utils/constants");
|
|
7
7
|
var constants_2 = require("../../../readiness/constants");
|
|
8
8
|
var constants_3 = require("../../../logger/constants");
|
|
9
|
+
var types_1 = require("../../polling/types");
|
|
9
10
|
/**
|
|
10
11
|
* Offline equivalent of `splitChangesUpdaterFactory`
|
|
11
12
|
*/
|
|
@@ -42,7 +43,7 @@ function fromObjectUpdaterFactory(splitsParser, storage, readiness, settings) {
|
|
|
42
43
|
splitsCache.clear(),
|
|
43
44
|
splitsCache.update(splits, [], Date.now())
|
|
44
45
|
]).then(function () {
|
|
45
|
-
readiness.splits.emit(constants_2.SDK_SPLITS_ARRIVED, { type:
|
|
46
|
+
readiness.splits.emit(constants_2.SDK_SPLITS_ARRIVED, { type: types_1.SdkUpdateMetadataKeys.FLAGS_UPDATE, names: [] });
|
|
46
47
|
if (startingUp) {
|
|
47
48
|
startingUp = false;
|
|
48
49
|
Promise.resolve(storage.validateCache ? storage.validateCache() : false).then(function (isCacheLoaded) {
|
|
@@ -50,7 +51,7 @@ function fromObjectUpdaterFactory(splitsParser, storage, readiness, settings) {
|
|
|
50
51
|
if (isCacheLoaded)
|
|
51
52
|
readiness.splits.emit(constants_2.SDK_SPLITS_CACHE_LOADED);
|
|
52
53
|
// Emits SDK_READY
|
|
53
|
-
readiness.segments.emit(constants_2.SDK_SEGMENTS_ARRIVED, { type:
|
|
54
|
+
readiness.segments.emit(constants_2.SDK_SEGMENTS_ARRIVED, { type: types_1.SdkUpdateMetadataKeys.SEGMENTS_UPDATE, names: [] });
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
return true;
|
|
@@ -1,2 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SdkUpdateMetadataKeys = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Metadata keys for SDK update events.
|
|
6
|
+
*/
|
|
7
|
+
var SdkUpdateMetadataKeys;
|
|
8
|
+
(function (SdkUpdateMetadataKeys) {
|
|
9
|
+
/**
|
|
10
|
+
* The update event emitted when the SDK cache is updated with new data for flags.
|
|
11
|
+
*/
|
|
12
|
+
SdkUpdateMetadataKeys["FLAGS_UPDATE"] = "FLAGS_UPDATE";
|
|
13
|
+
/**
|
|
14
|
+
* The update event emitted when the SDK cache is updated with new data for segments.
|
|
15
|
+
*/
|
|
16
|
+
SdkUpdateMetadataKeys["SEGMENTS_UPDATE"] = "SEGMENTS_UPDATE";
|
|
17
|
+
})(SdkUpdateMetadataKeys = exports.SdkUpdateMetadataKeys || (exports.SdkUpdateMetadataKeys = {}));
|
|
@@ -6,6 +6,7 @@ var constants_1 = require("../../../readiness/constants");
|
|
|
6
6
|
var constants_2 = require("../../../logger/constants");
|
|
7
7
|
var constants_3 = require("../../streaming/constants");
|
|
8
8
|
var AbstractSplitsCacheSync_1 = require("../../../storages/AbstractSplitsCacheSync");
|
|
9
|
+
var types_1 = require("../types");
|
|
9
10
|
/**
|
|
10
11
|
* factory of MySegments updater, a task that:
|
|
11
12
|
* - fetches mySegments using `mySegmentsFetcher`
|
|
@@ -39,7 +40,7 @@ function mySegmentsUpdaterFactory(log, mySegmentsFetcher, storage, segmentsEvent
|
|
|
39
40
|
// Notify update if required
|
|
40
41
|
if ((0, AbstractSplitsCacheSync_1.usesSegmentsSync)(storage) && (shouldNotifyUpdate || readyOnAlreadyExistentState)) {
|
|
41
42
|
readyOnAlreadyExistentState = false;
|
|
42
|
-
segmentsEventEmitter.emit(constants_1.SDK_SEGMENTS_ARRIVED, { type:
|
|
43
|
+
segmentsEventEmitter.emit(constants_1.SDK_SEGMENTS_ARRIVED, { type: types_1.SdkUpdateMetadataKeys.SEGMENTS_UPDATE, names: [] });
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
function _mySegmentsUpdater(retry, segmentsData, noCache, till) {
|
|
@@ -4,6 +4,7 @@ exports.segmentChangesUpdaterFactory = void 0;
|
|
|
4
4
|
var constants_1 = require("../../../readiness/constants");
|
|
5
5
|
var constants_2 = require("../../../logger/constants");
|
|
6
6
|
var timeout_1 = require("../../../utils/promise/timeout");
|
|
7
|
+
var types_1 = require("../types");
|
|
7
8
|
/**
|
|
8
9
|
* Factory of SegmentChanges updater, a task that:
|
|
9
10
|
* - fetches segment changes using `segmentChangesFetcher`
|
|
@@ -67,7 +68,7 @@ function segmentChangesUpdaterFactory(log, segmentChangesFetcher, segments, read
|
|
|
67
68
|
if (shouldUpdateFlags.some(function (update) { return update; }) || readyOnAlreadyExistentState) {
|
|
68
69
|
readyOnAlreadyExistentState = false;
|
|
69
70
|
var metadata = {
|
|
70
|
-
type:
|
|
71
|
+
type: types_1.SdkUpdateMetadataKeys.SEGMENTS_UPDATE,
|
|
71
72
|
names: []
|
|
72
73
|
};
|
|
73
74
|
if (readiness)
|
|
@@ -8,6 +8,7 @@ var lang_1 = require("../../../utils/lang");
|
|
|
8
8
|
var constants_3 = require("../../../utils/constants");
|
|
9
9
|
var sets_1 = require("../../../utils/lang/sets");
|
|
10
10
|
var constants_4 = require("../../streaming/constants");
|
|
11
|
+
var types_1 = require("../types");
|
|
11
12
|
// Checks that all registered segments have been fetched (changeNumber !== -1 for every segment).
|
|
12
13
|
// Returns a promise that could be rejected.
|
|
13
14
|
// @TODO review together with Segments and MySegments storage APIs
|
|
@@ -165,7 +166,7 @@ function splitChangesUpdaterFactory(log, splitChangesFetcher, storage, splitFilt
|
|
|
165
166
|
.catch(function () { return false; } /** noop. just to handle a possible `checkAllSegmentsExist` rejection, before emitting SDK event */)
|
|
166
167
|
.then(function (emitSplitsArrivedEvent) {
|
|
167
168
|
var metadata = {
|
|
168
|
-
type: updatedFlags.length > 0 ?
|
|
169
|
+
type: updatedFlags.length > 0 ? types_1.SdkUpdateMetadataKeys.FLAGS_UPDATE : types_1.SdkUpdateMetadataKeys.SEGMENTS_UPDATE,
|
|
169
170
|
names: updatedFlags.length > 0 ? updatedFlags : []
|
|
170
171
|
};
|
|
171
172
|
// emit SDK events
|
|
@@ -3,6 +3,7 @@ import { syncTaskFactory } from '../../syncTask';
|
|
|
3
3
|
import { CONTROL } from '../../../utils/constants';
|
|
4
4
|
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../../../readiness/constants';
|
|
5
5
|
import { SYNC_OFFLINE_DATA, ERROR_SYNC_OFFLINE_LOADING } from '../../../logger/constants';
|
|
6
|
+
import { SdkUpdateMetadataKeys } from '../../polling/types';
|
|
6
7
|
/**
|
|
7
8
|
* Offline equivalent of `splitChangesUpdaterFactory`
|
|
8
9
|
*/
|
|
@@ -39,7 +40,7 @@ export function fromObjectUpdaterFactory(splitsParser, storage, readiness, setti
|
|
|
39
40
|
splitsCache.clear(),
|
|
40
41
|
splitsCache.update(splits, [], Date.now())
|
|
41
42
|
]).then(function () {
|
|
42
|
-
readiness.splits.emit(SDK_SPLITS_ARRIVED, { type:
|
|
43
|
+
readiness.splits.emit(SDK_SPLITS_ARRIVED, { type: SdkUpdateMetadataKeys.FLAGS_UPDATE, names: [] });
|
|
43
44
|
if (startingUp) {
|
|
44
45
|
startingUp = false;
|
|
45
46
|
Promise.resolve(storage.validateCache ? storage.validateCache() : false).then(function (isCacheLoaded) {
|
|
@@ -47,7 +48,7 @@ export function fromObjectUpdaterFactory(splitsParser, storage, readiness, setti
|
|
|
47
48
|
if (isCacheLoaded)
|
|
48
49
|
readiness.splits.emit(SDK_SPLITS_CACHE_LOADED);
|
|
49
50
|
// Emits SDK_READY
|
|
50
|
-
readiness.segments.emit(SDK_SEGMENTS_ARRIVED, { type:
|
|
51
|
+
readiness.segments.emit(SDK_SEGMENTS_ARRIVED, { type: SdkUpdateMetadataKeys.SEGMENTS_UPDATE, names: [] });
|
|
51
52
|
});
|
|
52
53
|
}
|
|
53
54
|
return true;
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Metadata keys for SDK update events.
|
|
3
|
+
*/
|
|
4
|
+
export var SdkUpdateMetadataKeys;
|
|
5
|
+
(function (SdkUpdateMetadataKeys) {
|
|
6
|
+
/**
|
|
7
|
+
* The update event emitted when the SDK cache is updated with new data for flags.
|
|
8
|
+
*/
|
|
9
|
+
SdkUpdateMetadataKeys["FLAGS_UPDATE"] = "FLAGS_UPDATE";
|
|
10
|
+
/**
|
|
11
|
+
* The update event emitted when the SDK cache is updated with new data for segments.
|
|
12
|
+
*/
|
|
13
|
+
SdkUpdateMetadataKeys["SEGMENTS_UPDATE"] = "SEGMENTS_UPDATE";
|
|
14
|
+
})(SdkUpdateMetadataKeys || (SdkUpdateMetadataKeys = {}));
|
|
@@ -3,6 +3,7 @@ import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
|
3
3
|
import { SYNC_MYSEGMENTS_FETCH_RETRY } from '../../../logger/constants';
|
|
4
4
|
import { MEMBERSHIPS_LS_UPDATE } from '../../streaming/constants';
|
|
5
5
|
import { usesSegmentsSync } from '../../../storages/AbstractSplitsCacheSync';
|
|
6
|
+
import { SdkUpdateMetadataKeys } from '../types';
|
|
6
7
|
/**
|
|
7
8
|
* factory of MySegments updater, a task that:
|
|
8
9
|
* - fetches mySegments using `mySegmentsFetcher`
|
|
@@ -36,7 +37,7 @@ export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, storage, segmen
|
|
|
36
37
|
// Notify update if required
|
|
37
38
|
if (usesSegmentsSync(storage) && (shouldNotifyUpdate || readyOnAlreadyExistentState)) {
|
|
38
39
|
readyOnAlreadyExistentState = false;
|
|
39
|
-
segmentsEventEmitter.emit(SDK_SEGMENTS_ARRIVED, { type:
|
|
40
|
+
segmentsEventEmitter.emit(SDK_SEGMENTS_ARRIVED, { type: SdkUpdateMetadataKeys.SEGMENTS_UPDATE, names: [] });
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
function _mySegmentsUpdater(retry, segmentsData, noCache, till) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
2
2
|
import { LOG_PREFIX_INSTANTIATION, LOG_PREFIX_SYNC_SEGMENTS } from '../../../logger/constants';
|
|
3
3
|
import { timeout } from '../../../utils/promise/timeout';
|
|
4
|
+
import { SdkUpdateMetadataKeys } from '../types';
|
|
4
5
|
/**
|
|
5
6
|
* Factory of SegmentChanges updater, a task that:
|
|
6
7
|
* - fetches segment changes using `segmentChangesFetcher`
|
|
@@ -64,7 +65,7 @@ export function segmentChangesUpdaterFactory(log, segmentChangesFetcher, segment
|
|
|
64
65
|
if (shouldUpdateFlags.some(function (update) { return update; }) || readyOnAlreadyExistentState) {
|
|
65
66
|
readyOnAlreadyExistentState = false;
|
|
66
67
|
var metadata = {
|
|
67
|
-
type:
|
|
68
|
+
type: SdkUpdateMetadataKeys.SEGMENTS_UPDATE,
|
|
68
69
|
names: []
|
|
69
70
|
};
|
|
70
71
|
if (readiness)
|
|
@@ -5,6 +5,7 @@ import { startsWith } from '../../../utils/lang';
|
|
|
5
5
|
import { IN_RULE_BASED_SEGMENT, IN_SEGMENT, RULE_BASED_SEGMENT, STANDARD_SEGMENT } from '../../../utils/constants';
|
|
6
6
|
import { setToArray } from '../../../utils/lang/sets';
|
|
7
7
|
import { SPLIT_UPDATE } from '../../streaming/constants';
|
|
8
|
+
import { SdkUpdateMetadataKeys } from '../types';
|
|
8
9
|
// Checks that all registered segments have been fetched (changeNumber !== -1 for every segment).
|
|
9
10
|
// Returns a promise that could be rejected.
|
|
10
11
|
// @TODO review together with Segments and MySegments storage APIs
|
|
@@ -160,7 +161,7 @@ export function splitChangesUpdaterFactory(log, splitChangesFetcher, storage, sp
|
|
|
160
161
|
.catch(function () { return false; } /** noop. just to handle a possible `checkAllSegmentsExist` rejection, before emitting SDK event */)
|
|
161
162
|
.then(function (emitSplitsArrivedEvent) {
|
|
162
163
|
var metadata = {
|
|
163
|
-
type: updatedFlags.length > 0 ?
|
|
164
|
+
type: updatedFlags.length > 0 ? SdkUpdateMetadataKeys.FLAGS_UPDATE : SdkUpdateMetadataKeys.SEGMENTS_UPDATE,
|
|
164
165
|
names: updatedFlags.length > 0 ? updatedFlags : []
|
|
165
166
|
};
|
|
166
167
|
// emit SDK events
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@ import { ISettings } from '../../../types';
|
|
|
9
9
|
import { CONTROL } from '../../../utils/constants';
|
|
10
10
|
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../../../readiness/constants';
|
|
11
11
|
import { SYNC_OFFLINE_DATA, ERROR_SYNC_OFFLINE_LOADING } from '../../../logger/constants';
|
|
12
|
-
import { SdkUpdateMetadataKeys } from '
|
|
12
|
+
import { SdkUpdateMetadataKeys } from '../../polling/types';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Offline equivalent of `splitChangesUpdaterFactory`
|
|
@@ -4,6 +4,20 @@ import { IStorageSync } from '../../storages/types';
|
|
|
4
4
|
import { MEMBERSHIPS_LS_UPDATE, MEMBERSHIPS_MS_UPDATE } from '../streaming/types';
|
|
5
5
|
import { ITask, ISyncTask } from '../types';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Metadata keys for SDK update events.
|
|
9
|
+
*/
|
|
10
|
+
export enum SdkUpdateMetadataKeys {
|
|
11
|
+
/**
|
|
12
|
+
* The update event emitted when the SDK cache is updated with new data for flags.
|
|
13
|
+
*/
|
|
14
|
+
FLAGS_UPDATE = 'FLAGS_UPDATE',
|
|
15
|
+
/**
|
|
16
|
+
* The update event emitted when the SDK cache is updated with new data for segments.
|
|
17
|
+
*/
|
|
18
|
+
SEGMENTS_UPDATE = 'SEGMENTS_UPDATE'
|
|
19
|
+
}
|
|
20
|
+
|
|
7
21
|
export interface ISplitsSyncTask extends ISyncTask<[noCache?: boolean, till?: number, splitUpdateNotification?: { payload: ISplit | IRBSegment, changeNumber: number }], boolean> { }
|
|
8
22
|
|
|
9
23
|
export interface ISegmentsSyncTask extends ISyncTask<[fetchOnlyNew?: boolean, segmentName?: string, noCache?: boolean, till?: number], boolean> { }
|
|
@@ -9,7 +9,7 @@ import { MySegmentsData } from '../types';
|
|
|
9
9
|
import { IMembershipsResponse } from '../../../dtos/types';
|
|
10
10
|
import { MEMBERSHIPS_LS_UPDATE } from '../../streaming/constants';
|
|
11
11
|
import { usesSegmentsSync } from '../../../storages/AbstractSplitsCacheSync';
|
|
12
|
-
import { SdkUpdateMetadataKeys } from '
|
|
12
|
+
import { SdkUpdateMetadataKeys } from '../types';
|
|
13
13
|
|
|
14
14
|
type IMySegmentsUpdater = (segmentsData?: MySegmentsData, noCache?: boolean, till?: number) => Promise<boolean>
|
|
15
15
|
|
|
@@ -5,7 +5,8 @@ import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
|
5
5
|
import { ILogger } from '../../../logger/types';
|
|
6
6
|
import { LOG_PREFIX_INSTANTIATION, LOG_PREFIX_SYNC_SEGMENTS } from '../../../logger/constants';
|
|
7
7
|
import { timeout } from '../../../utils/promise/timeout';
|
|
8
|
-
import { SdkUpdateMetadata
|
|
8
|
+
import { SdkUpdateMetadata } from '../../../../types/splitio';
|
|
9
|
+
import { SdkUpdateMetadataKeys } from '../types';
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
type ISegmentChangesUpdater = (fetchOnlyNew?: boolean, segmentName?: string, noCache?: boolean, till?: number) => Promise<boolean>
|
|
@@ -10,7 +10,8 @@ import { startsWith } from '../../../utils/lang';
|
|
|
10
10
|
import { IN_RULE_BASED_SEGMENT, IN_SEGMENT, RULE_BASED_SEGMENT, STANDARD_SEGMENT } from '../../../utils/constants';
|
|
11
11
|
import { setToArray } from '../../../utils/lang/sets';
|
|
12
12
|
import { SPLIT_UPDATE } from '../../streaming/constants';
|
|
13
|
-
import { SdkUpdateMetadata
|
|
13
|
+
import { SdkUpdateMetadata } from '../../../../types/splitio';
|
|
14
|
+
import { SdkUpdateMetadataKeys } from '../types';
|
|
14
15
|
|
|
15
16
|
export type InstantUpdate = { payload: ISplit | IRBSegment, changeNumber: number, type: string };
|
|
16
17
|
type SplitChangesUpdater = (noCache?: boolean, till?: number, instantUpdate?: InstantUpdate) => Promise<boolean>
|
package/types/splitio.d.ts
CHANGED
|
@@ -492,20 +492,6 @@ declare namespace SplitIO {
|
|
|
492
492
|
removeItem(key: string): void | Promise<void>;
|
|
493
493
|
}
|
|
494
494
|
|
|
495
|
-
/**
|
|
496
|
-
* Metadata keys for SDK update events.
|
|
497
|
-
*/
|
|
498
|
-
const enum SdkUpdateMetadataKeys {
|
|
499
|
-
/**
|
|
500
|
-
* The update event emitted when the SDK cache is updated with new data for flags.
|
|
501
|
-
*/
|
|
502
|
-
FLAGS_UPDATE = 'FLAGS_UPDATE',
|
|
503
|
-
/**
|
|
504
|
-
* The update event emitted when the SDK cache is updated with new data for segments.
|
|
505
|
-
*/
|
|
506
|
-
SEGMENTS_UPDATE = 'SEGMENTS_UPDATE'
|
|
507
|
-
}
|
|
508
|
-
|
|
509
495
|
/**
|
|
510
496
|
* Metadata for the update event emitted when the SDK cache is updated with new data for flags or segments.
|
|
511
497
|
*/
|
|
@@ -513,13 +499,22 @@ declare namespace SplitIO {
|
|
|
513
499
|
/**
|
|
514
500
|
* The type of update event.
|
|
515
501
|
*/
|
|
516
|
-
type:
|
|
502
|
+
type: 'FLAGS_UPDATE' | 'SEGMENTS_UPDATE'
|
|
517
503
|
/**
|
|
518
504
|
* The names of the flags or segments that were updated.
|
|
519
505
|
*/
|
|
520
506
|
names: string[]
|
|
521
507
|
}
|
|
522
508
|
|
|
509
|
+
/**
|
|
510
|
+
* Metadata keys for SDK update events.
|
|
511
|
+
* Use the string literals directly: 'FLAGS_UPDATE' or 'SEGMENTS_UPDATE'
|
|
512
|
+
*/
|
|
513
|
+
type SdkUpdateMetadataKeys = {
|
|
514
|
+
FLAGS_UPDATE: 'FLAGS_UPDATE';
|
|
515
|
+
SEGMENTS_UPDATE: 'SEGMENTS_UPDATE';
|
|
516
|
+
};
|
|
517
|
+
|
|
523
518
|
/**
|
|
524
519
|
* Metadata for the ready events emitted when the SDK is ready to evaluate feature flags.
|
|
525
520
|
*/
|