@splitsoftware/splitio-commons 1.17.1-rc.3 → 2.0.0-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 +7 -3
- package/cjs/evaluator/index.js +2 -2
- package/cjs/evaluator/matchers/semver_inlist.js +1 -2
- package/cjs/evaluator/matchers/whitelist.js +1 -2
- package/cjs/listeners/browser.js +1 -2
- package/cjs/logger/browser/DebugLogger.js +1 -2
- package/cjs/logger/browser/ErrorLogger.js +1 -2
- package/cjs/logger/browser/InfoLogger.js +1 -2
- package/cjs/logger/browser/WarnLogger.js +1 -2
- package/cjs/logger/index.js +1 -2
- package/cjs/readiness/readinessManager.js +5 -7
- package/cjs/sdkClient/clientCS.js +5 -8
- package/cjs/sdkClient/sdkClientMethodCS.js +5 -8
- package/cjs/sdkFactory/index.js +10 -33
- package/cjs/services/decorateHeaders.js +1 -2
- package/cjs/storages/AbstractSplitsCacheAsync.js +7 -0
- package/cjs/storages/AbstractSplitsCacheSync.js +7 -0
- package/cjs/storages/KeyBuilderCS.js +0 -9
- package/cjs/storages/dataLoader.js +32 -64
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -21
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +14 -7
- package/cjs/storages/inLocalStorage/index.js +1 -6
- package/cjs/storages/inMemory/InMemoryStorageCS.js +4 -16
- package/cjs/storages/inMemory/SegmentsCacheInMemory.js +3 -4
- package/cjs/storages/inMemory/SplitsCacheInMemory.js +2 -3
- package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +2 -3
- package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +2 -3
- package/cjs/storages/inRedis/RedisAdapter.js +3 -4
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +1 -1
- package/cjs/storages/inRedis/TelemetryCacheInRedis.js +3 -4
- package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +1 -2
- package/cjs/storages/pluggable/SplitsCachePluggable.js +1 -1
- package/cjs/storages/pluggable/TelemetryCachePluggable.js +6 -7
- package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +1 -2
- package/cjs/storages/pluggable/inMemoryWrapper.js +7 -8
- package/cjs/storages/pluggable/index.js +32 -37
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +7 -2
- package/cjs/sync/polling/pollingManagerSS.js +3 -3
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +13 -5
- package/cjs/sync/streaming/parseUtils.js +0 -1
- package/cjs/sync/streaming/pushManager.js +2 -3
- package/cjs/trackers/eventTracker.js +9 -11
- package/cjs/trackers/impressionsTracker.js +13 -15
- package/cjs/trackers/uniqueKeysTracker.js +3 -5
- package/cjs/utils/LRUCache/index.js +1 -2
- package/cjs/utils/constants/browser.js +1 -4
- package/cjs/utils/lang/index.js +6 -9
- package/cjs/utils/lang/objectAssign.js +12 -77
- package/cjs/utils/lang/sets.js +3 -110
- package/cjs/utils/settingsValidation/index.js +0 -9
- package/cjs/utils/settingsValidation/logger/builtinLogger.js +1 -2
- package/cjs/utils/settingsValidation/storage/storageCS.js +12 -1
- package/esm/evaluator/index.js +3 -3
- package/esm/evaluator/matchers/semver_inlist.js +1 -2
- package/esm/evaluator/matchers/whitelist.js +1 -2
- package/esm/listeners/browser.js +1 -2
- package/esm/logger/browser/DebugLogger.js +1 -2
- package/esm/logger/browser/ErrorLogger.js +1 -2
- package/esm/logger/browser/InfoLogger.js +1 -2
- package/esm/logger/browser/WarnLogger.js +1 -2
- package/esm/logger/index.js +1 -2
- package/esm/readiness/readinessManager.js +5 -7
- package/esm/sdkClient/clientCS.js +5 -8
- package/esm/sdkClient/sdkClientMethodCS.js +5 -8
- package/esm/sdkFactory/index.js +11 -34
- package/esm/services/decorateHeaders.js +1 -2
- package/esm/storages/AbstractSplitsCacheAsync.js +7 -0
- package/esm/storages/AbstractSplitsCacheSync.js +7 -0
- package/esm/storages/KeyBuilderCS.js +0 -9
- package/esm/storages/dataLoader.js +30 -61
- package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -21
- package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +14 -7
- package/esm/storages/inLocalStorage/index.js +2 -7
- package/esm/storages/inMemory/InMemoryStorageCS.js +4 -16
- package/esm/storages/inMemory/SegmentsCacheInMemory.js +3 -4
- package/esm/storages/inMemory/SplitsCacheInMemory.js +2 -3
- package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +2 -3
- package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +2 -3
- package/esm/storages/inRedis/RedisAdapter.js +3 -4
- package/esm/storages/inRedis/SplitsCacheInRedis.js +2 -2
- package/esm/storages/inRedis/TelemetryCacheInRedis.js +3 -4
- package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +1 -2
- package/esm/storages/pluggable/SplitsCachePluggable.js +2 -2
- package/esm/storages/pluggable/TelemetryCachePluggable.js +6 -7
- package/esm/storages/pluggable/UniqueKeysCachePluggable.js +1 -2
- package/esm/storages/pluggable/inMemoryWrapper.js +7 -8
- package/esm/storages/pluggable/index.js +32 -37
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +8 -3
- package/esm/sync/polling/pollingManagerSS.js +3 -3
- package/esm/sync/polling/updaters/splitChangesUpdater.js +14 -6
- package/esm/sync/streaming/parseUtils.js +0 -1
- package/esm/sync/streaming/pushManager.js +2 -3
- package/esm/trackers/eventTracker.js +9 -11
- package/esm/trackers/impressionsTracker.js +13 -15
- package/esm/trackers/uniqueKeysTracker.js +3 -5
- package/esm/utils/LRUCache/index.js +1 -2
- package/esm/utils/constants/browser.js +0 -3
- package/esm/utils/lang/index.js +6 -9
- package/esm/utils/lang/objectAssign.js +12 -77
- package/esm/utils/lang/sets.js +2 -107
- package/esm/utils/settingsValidation/index.js +0 -9
- package/esm/utils/settingsValidation/logger/builtinLogger.js +1 -2
- package/esm/utils/settingsValidation/storage/storageCS.js +10 -0
- package/package.json +2 -2
- package/src/evaluator/index.ts +5 -5
- package/src/evaluator/matchers/semver_inlist.ts +1 -2
- package/src/evaluator/matchers/whitelist.ts +1 -3
- package/src/listeners/browser.ts +1 -2
- package/src/logger/browser/DebugLogger.ts +1 -2
- package/src/logger/browser/ErrorLogger.ts +1 -2
- package/src/logger/browser/InfoLogger.ts +1 -2
- package/src/logger/browser/WarnLogger.ts +1 -2
- package/src/logger/index.ts +3 -4
- package/src/readiness/readinessManager.ts +7 -9
- package/src/readiness/types.ts +0 -1
- package/src/sdkClient/clientCS.ts +5 -8
- package/src/sdkClient/sdkClientMethodCS.ts +3 -6
- package/src/sdkFactory/index.ts +12 -37
- package/src/sdkFactory/types.ts +1 -4
- package/src/services/decorateHeaders.ts +1 -2
- package/src/storages/AbstractSplitsCacheAsync.ts +9 -2
- package/src/storages/AbstractSplitsCacheSync.ts +9 -2
- package/src/storages/KeyBuilderCS.ts +0 -13
- package/src/storages/dataLoader.ts +32 -62
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -21
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +16 -8
- package/src/storages/inLocalStorage/index.ts +2 -8
- package/src/storages/inMemory/InMemoryStorageCS.ts +4 -19
- package/src/storages/inMemory/SegmentsCacheInMemory.ts +4 -5
- package/src/storages/inMemory/SplitsCacheInMemory.ts +4 -5
- package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +4 -5
- package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +4 -5
- package/src/storages/inRedis/RedisAdapter.ts +4 -5
- package/src/storages/inRedis/SplitsCacheInRedis.ts +3 -3
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +3 -4
- package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +1 -2
- package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -1
- package/src/storages/pluggable/SplitsCachePluggable.ts +3 -3
- package/src/storages/pluggable/TelemetryCachePluggable.ts +6 -7
- package/src/storages/pluggable/UniqueKeysCachePluggable.ts +1 -2
- package/src/storages/pluggable/inMemoryWrapper.ts +8 -9
- package/src/storages/pluggable/index.ts +33 -38
- package/src/storages/types.ts +9 -6
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +7 -3
- package/src/sync/polling/pollingManagerSS.ts +2 -3
- package/src/sync/polling/updaters/splitChangesUpdater.ts +15 -8
- package/src/sync/streaming/parseUtils.ts +0 -1
- package/src/sync/streaming/pushManager.ts +3 -4
- package/src/sync/submitters/types.ts +3 -4
- package/src/trackers/eventTracker.ts +7 -10
- package/src/trackers/impressionsTracker.ts +9 -12
- package/src/trackers/types.ts +0 -1
- package/src/trackers/uniqueKeysTracker.ts +4 -6
- package/src/types.ts +9 -18
- package/src/utils/LRUCache/index.ts +2 -3
- package/src/utils/constants/browser.ts +0 -4
- package/src/utils/lang/index.ts +6 -7
- package/src/utils/lang/objectAssign.ts +13 -92
- package/src/utils/lang/sets.ts +3 -125
- package/src/utils/settingsValidation/index.ts +0 -10
- package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
- package/src/utils/settingsValidation/storage/storageCS.ts +13 -0
- package/src/utils/settingsValidation/types.ts +0 -2
- package/types/logger/index.d.ts +1 -2
- package/types/readiness/types.d.ts +0 -1
- package/types/sdkClient/clientCS.d.ts +2 -3
- package/types/sdkFactory/types.d.ts +1 -3
- package/types/storages/AbstractSplitsCacheAsync.d.ts +6 -2
- package/types/storages/AbstractSplitsCacheSync.d.ts +6 -2
- package/types/storages/KeyBuilderCS.d.ts +0 -2
- package/types/storages/dataLoader.d.ts +6 -17
- package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +7 -2
- package/types/storages/inMemory/SplitsCacheInMemory.d.ts +1 -2
- package/types/storages/inMemory/UniqueKeysCacheInMemory.d.ts +2 -3
- package/types/storages/inRedis/SplitsCacheInRedis.d.ts +1 -2
- package/types/storages/pluggable/SplitsCachePluggable.d.ts +1 -2
- package/types/storages/pluggable/inMemoryWrapper.d.ts +1 -2
- package/types/storages/types.d.ts +7 -6
- package/types/sync/polling/updaters/splitChangesUpdater.d.ts +1 -2
- package/types/sync/submitters/types.d.ts +3 -4
- package/types/trackers/eventTracker.d.ts +1 -1
- package/types/trackers/impressionsTracker.d.ts +1 -1
- package/types/trackers/types.d.ts +0 -1
- package/types/types.d.ts +9 -17
- package/types/utils/LRUCache/index.d.ts +1 -2
- package/types/utils/constants/browser.d.ts +0 -2
- package/types/utils/lang/objectAssign.d.ts +3 -0
- package/types/utils/lang/sets.d.ts +1 -61
- package/types/utils/settingsValidation/index.d.ts +0 -1
- package/types/utils/settingsValidation/storage/storageCS.d.ts +5 -0
- package/types/utils/settingsValidation/types.d.ts +0 -2
- package/cjs/integrations/browser.js +0 -31
- package/cjs/integrations/ga/GaToSplit.js +0 -257
- package/cjs/integrations/ga/GoogleAnalyticsToSplit.js +0 -14
- package/cjs/integrations/ga/SplitToGa.js +0 -123
- package/cjs/integrations/ga/SplitToGoogleAnalytics.js +0 -14
- package/cjs/integrations/ga/types.js +0 -2
- package/cjs/sdkClient/sdkClientMethodCSWithTT.js +0 -79
- package/cjs/utils/lang/maps.js +0 -96
- package/esm/integrations/browser.js +0 -27
- package/esm/integrations/ga/GaToSplit.js +0 -250
- package/esm/integrations/ga/GoogleAnalyticsToSplit.js +0 -10
- package/esm/integrations/ga/SplitToGa.js +0 -120
- package/esm/integrations/ga/SplitToGoogleAnalytics.js +0 -10
- package/esm/integrations/ga/types.js +0 -1
- package/esm/sdkClient/sdkClientMethodCSWithTT.js +0 -75
- package/esm/utils/lang/maps.js +0 -92
- package/src/integrations/browser.ts +0 -35
- package/src/integrations/ga/GaToSplit.ts +0 -299
- package/src/integrations/ga/GoogleAnalyticsToSplit.ts +0 -14
- package/src/integrations/ga/SplitToGa.ts +0 -135
- package/src/integrations/ga/SplitToGoogleAnalytics.ts +0 -14
- package/src/integrations/ga/autoRequire.js +0 -33
- package/src/integrations/ga/types.ts +0 -153
- package/src/sdkClient/sdkClientMethodCSWithTT.ts +0 -101
- package/src/utils/lang/maps.ts +0 -108
|
@@ -15,7 +15,6 @@ var constants_1 = require("./constants");
|
|
|
15
15
|
var constants_2 = require("../../logger/constants");
|
|
16
16
|
var types_1 = require("./SSEHandler/types");
|
|
17
17
|
var parseUtils_1 = require("./parseUtils");
|
|
18
|
-
var sets_1 = require("../../utils/lang/sets");
|
|
19
18
|
var murmur3_64_1 = require("../../utils/murmur3/murmur3_64");
|
|
20
19
|
var constants_3 = require("../../utils/constants");
|
|
21
20
|
/**
|
|
@@ -221,8 +220,8 @@ function pushManagerFactory(params, pollingManager) {
|
|
|
221
220
|
var keyList = void 0, added_1, removed_1;
|
|
222
221
|
try {
|
|
223
222
|
keyList = (0, parseUtils_1.parseKeyList)(parsedData.d, parsedData.c);
|
|
224
|
-
added_1 = new
|
|
225
|
-
removed_1 = new
|
|
223
|
+
added_1 = new Set(keyList.a);
|
|
224
|
+
removed_1 = new Set(keyList.r);
|
|
226
225
|
}
|
|
227
226
|
catch (e) {
|
|
228
227
|
log.warn(constants_2.STREAMING_PARSING_MEMBERSHIPS_UPDATE, ['KeyList', e]);
|
|
@@ -12,7 +12,7 @@ var mode_1 = require("../utils/settingsValidation/mode");
|
|
|
12
12
|
* @param eventsCache cache to save events
|
|
13
13
|
* @param integrationsManager optional event handler used for integrations
|
|
14
14
|
*/
|
|
15
|
-
function eventTrackerFactory(settings, eventsCache,
|
|
15
|
+
function eventTrackerFactory(settings, eventsCache, integrationsManager, telemetryCache) {
|
|
16
16
|
var log = settings.log, mode = settings.mode;
|
|
17
17
|
var isAsync = (0, mode_1.isConsumerMode)(mode);
|
|
18
18
|
function queueEventsCallback(eventData, tracked) {
|
|
@@ -23,16 +23,14 @@ function eventTrackerFactory(settings, eventsCache, whenInit, integrationsManage
|
|
|
23
23
|
log.info(constants_1.EVENTS_TRACKER_SUCCESS, [msg]);
|
|
24
24
|
if (integrationsManager) {
|
|
25
25
|
// Wrap in a timeout because we don't want it to be blocking.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
});
|
|
26
|
+
setTimeout(function () {
|
|
27
|
+
// copy of event, to avoid unexpected behaviour if modified by integrations
|
|
28
|
+
var eventDataCopy = (0, objectAssign_1.objectAssign)({}, eventData);
|
|
29
|
+
if (properties)
|
|
30
|
+
eventDataCopy.properties = (0, objectAssign_1.objectAssign)({}, properties);
|
|
31
|
+
// integrationsManager does not throw errors (they are internally handled by each integration module)
|
|
32
|
+
integrationsManager.handleEvent(eventDataCopy);
|
|
33
|
+
}, 0);
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
else {
|
|
@@ -14,7 +14,7 @@ var constants_2 = require("../utils/constants");
|
|
|
14
14
|
* @param integrationsManager optional integrations manager
|
|
15
15
|
* @param strategy strategy for impressions tracking.
|
|
16
16
|
*/
|
|
17
|
-
function impressionsTrackerFactory(settings, impressionsCache, strategy,
|
|
17
|
+
function impressionsTrackerFactory(settings, impressionsCache, strategy, integrationsManager, telemetryCache) {
|
|
18
18
|
var log = settings.log, impressionListener = settings.impressionListener, _a = settings.runtime, ip = _a.ip, hostname = _a.hostname, version = settings.version;
|
|
19
19
|
return {
|
|
20
20
|
track: function (impressions, attributes) {
|
|
@@ -54,20 +54,18 @@ function impressionsTrackerFactory(settings, impressionsCache, strategy, whenIni
|
|
|
54
54
|
sdkLanguageVersion: version
|
|
55
55
|
};
|
|
56
56
|
// Wrap in a timeout because we don't want it to be blocking.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
70
|
-
});
|
|
57
|
+
setTimeout(function () {
|
|
58
|
+
// integrationsManager.handleImpression does not throw errors
|
|
59
|
+
if (integrationsManager)
|
|
60
|
+
integrationsManager.handleImpression(impressionData);
|
|
61
|
+
try { // @ts-ignore. An exception on the listeners should not break the SDK.
|
|
62
|
+
if (impressionListener)
|
|
63
|
+
impressionListener.logImpression(impressionData);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
log.error(constants_1.ERROR_IMPRESSIONS_LISTENER, [err]);
|
|
67
|
+
}
|
|
68
|
+
}, 0);
|
|
71
69
|
};
|
|
72
70
|
for (var i = 0; i < impressionsToListenerCount; i++) {
|
|
73
71
|
_loop_1(i);
|
|
@@ -19,6 +19,9 @@ var noopFilterAdapter = {
|
|
|
19
19
|
function uniqueKeysTrackerFactory(log, uniqueKeysCache, filterAdapter) {
|
|
20
20
|
if (filterAdapter === void 0) { filterAdapter = noopFilterAdapter; }
|
|
21
21
|
var intervalId;
|
|
22
|
+
if (filterAdapter.refreshRate) {
|
|
23
|
+
intervalId = setInterval(filterAdapter.clear, filterAdapter.refreshRate);
|
|
24
|
+
}
|
|
22
25
|
return {
|
|
23
26
|
track: function (key, featureName) {
|
|
24
27
|
if (!filterAdapter.add(key, featureName)) {
|
|
@@ -27,11 +30,6 @@ function uniqueKeysTrackerFactory(log, uniqueKeysCache, filterAdapter) {
|
|
|
27
30
|
}
|
|
28
31
|
uniqueKeysCache.track(key, featureName);
|
|
29
32
|
},
|
|
30
|
-
start: function () {
|
|
31
|
-
if (filterAdapter.refreshRate) {
|
|
32
|
-
intervalId = setInterval(filterAdapter.clear, filterAdapter.refreshRate);
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
33
|
stop: function () {
|
|
36
34
|
clearInterval(intervalId);
|
|
37
35
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LRUCache = void 0;
|
|
4
|
-
var maps_1 = require("../lang/maps");
|
|
5
4
|
var LinkedList_1 = require("./LinkedList");
|
|
6
5
|
var LRUCache = /** @class */ (function () {
|
|
7
6
|
function LRUCache(maxSize) {
|
|
8
7
|
this.maxLen = maxSize || 1;
|
|
9
|
-
this.items = new
|
|
8
|
+
this.items = new Map();
|
|
10
9
|
this.lru = new LinkedList_1.LinkedList();
|
|
11
10
|
}
|
|
12
11
|
LRUCache.prototype.get = function (key) {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_CACHE_EXPIRATION_IN_MILLIS =
|
|
4
|
-
// Integration types
|
|
5
|
-
exports.GOOGLE_ANALYTICS_TO_SPLIT = 'GOOGLE_ANALYTICS_TO_SPLIT';
|
|
6
|
-
exports.SPLIT_TO_GOOGLE_ANALYTICS = 'SPLIT_TO_GOOGLE_ANALYTICS';
|
|
3
|
+
exports.DEFAULT_CACHE_EXPIRATION_IN_MILLIS = void 0;
|
|
7
4
|
// This value might be eventually set via a config parameter
|
|
8
5
|
exports.DEFAULT_CACHE_EXPIRATION_IN_MILLIS = 864000000; // 10 days
|
package/cjs/utils/lang/index.js
CHANGED
|
@@ -121,11 +121,9 @@ exports.isBoolean = isBoolean;
|
|
|
121
121
|
function isFiniteNumber(val) {
|
|
122
122
|
if (val instanceof Number)
|
|
123
123
|
val = val.valueOf();
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return Number.isFinite ? Number.isFinite(val) : isFinite(val);
|
|
128
|
-
return false;
|
|
124
|
+
return typeof val === 'number' ?
|
|
125
|
+
Number.isFinite ? Number.isFinite(val) : isFinite(val) :
|
|
126
|
+
false;
|
|
129
127
|
}
|
|
130
128
|
exports.isFiniteNumber = isFiniteNumber;
|
|
131
129
|
/**
|
|
@@ -135,10 +133,9 @@ exports.isFiniteNumber = isFiniteNumber;
|
|
|
135
133
|
function isIntegerNumber(val) {
|
|
136
134
|
if (val instanceof Number)
|
|
137
135
|
val = val.valueOf();
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return false;
|
|
136
|
+
return typeof val === 'number' ?
|
|
137
|
+
Number.isInteger ? Number.isInteger(val) : isFinite(val) && Math.floor(val) === val :
|
|
138
|
+
false;
|
|
142
139
|
}
|
|
143
140
|
exports.isIntegerNumber = isIntegerNumber;
|
|
144
141
|
/**
|
|
@@ -1,85 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
the ESM build of the SDK with tools that doesn't support CommonJS by default (e.g. Rollup).
|
|
6
|
-
|
|
7
|
-
object-assign
|
|
8
|
-
(c) Sindre Sorhus
|
|
9
|
-
@license MIT
|
|
10
|
-
*/
|
|
2
|
+
/**
|
|
3
|
+
* A tiny polyfill for Object.assign
|
|
4
|
+
*/
|
|
11
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
6
|
exports.objectAssign = void 0;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
|
|
16
|
-
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
17
|
-
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
|
18
|
-
function toObject(val) {
|
|
19
|
-
if (val === null || val === undefined) {
|
|
7
|
+
exports.objectAssign = Object.assign || function (target) {
|
|
8
|
+
if (target === null || target === undefined)
|
|
20
9
|
throw new TypeError('Object.assign cannot be called with null or undefined');
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
// Detect buggy property enumeration order in older V8 versions.
|
|
30
|
-
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
|
|
31
|
-
var test1 = new String('abc');
|
|
32
|
-
test1[5] = 'de';
|
|
33
|
-
if (Object.getOwnPropertyNames(test1)[0] === '5') {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
|
|
37
|
-
var test2 = {};
|
|
38
|
-
for (var i = 0; i < 10; i++) {
|
|
39
|
-
test2['_' + String.fromCharCode(i)] = i;
|
|
40
|
-
}
|
|
41
|
-
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
|
|
42
|
-
return test2[n];
|
|
43
|
-
});
|
|
44
|
-
if (order2.join('') !== '0123456789') {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
|
|
48
|
-
var test3 = {};
|
|
49
|
-
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
|
|
50
|
-
test3[letter] = letter;
|
|
51
|
-
});
|
|
52
|
-
if (Object.keys(Object.assign({}, test3)).join('') !==
|
|
53
|
-
'abcdefghijklmnopqrst') {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
catch (err) {
|
|
59
|
-
// We don't expect any of the above to throw, but better to be safe.
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
|
|
64
|
-
var from;
|
|
65
|
-
var to = toObject(target);
|
|
66
|
-
var symbols;
|
|
67
|
-
for (var s = 1; s < arguments.length; s++) {
|
|
68
|
-
from = Object(arguments[s]);
|
|
69
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
70
|
-
for (var key in from) {
|
|
71
|
-
if (hasOwnProperty.call(from, key)) {
|
|
72
|
-
to[key] = from[key];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (getOwnPropertySymbols) {
|
|
76
|
-
symbols = getOwnPropertySymbols(from);
|
|
77
|
-
for (var i = 0; i < symbols.length; i++) {
|
|
78
|
-
if (propIsEnumerable.call(from, symbols[i])) {
|
|
79
|
-
to[symbols[i]] = from[symbols[i]];
|
|
80
|
-
}
|
|
10
|
+
target = Object(target);
|
|
11
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
12
|
+
var source = Object(arguments[i]); // eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
for (var key in source) {
|
|
14
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
15
|
+
target[key] = source[key];
|
|
81
16
|
}
|
|
82
17
|
}
|
|
83
18
|
}
|
|
84
|
-
return
|
|
19
|
+
return target;
|
|
85
20
|
};
|
package/cjs/utils/lang/sets.js
CHANGED
|
@@ -1,120 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Set implementation based on es6-set polyfill (https://github.com/medikoo/es6-set/blob/master/polyfill.js),
|
|
4
|
-
* with the minimal features used by the SDK.
|
|
5
|
-
|
|
6
|
-
Copyright (C) 2013 Mariusz Nowak (www.medikoo.com)
|
|
7
|
-
|
|
8
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
in the Software without restriction, including without limitation the rights
|
|
11
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
furnished to do so, subject to the following conditions:
|
|
14
|
-
|
|
15
|
-
The above copyright notice and this permission notice shall be included in
|
|
16
|
-
all copies or substantial portions of the Software.
|
|
17
|
-
|
|
18
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
THE SOFTWARE.
|
|
25
|
-
**/
|
|
26
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.returnDifference = exports.returnSetsUnion =
|
|
28
|
-
var SetPoly = /** @class */ (function () {
|
|
29
|
-
// unlike ES6 `Set`, it only accepts an array as first argument iterable
|
|
30
|
-
function SetPoly(values) {
|
|
31
|
-
var _this = this;
|
|
32
|
-
this.__setData__ = [];
|
|
33
|
-
if (Array.isArray(values))
|
|
34
|
-
values.forEach(function (value) { _this.add(value); });
|
|
35
|
-
}
|
|
36
|
-
SetPoly.prototype.clear = function () {
|
|
37
|
-
if (!this.__setData__.length)
|
|
38
|
-
return;
|
|
39
|
-
this.__setData__.length = 0;
|
|
40
|
-
};
|
|
41
|
-
SetPoly.prototype.add = function (value) {
|
|
42
|
-
if (this.has(value))
|
|
43
|
-
return this;
|
|
44
|
-
this.__setData__.push(value);
|
|
45
|
-
return this;
|
|
46
|
-
};
|
|
47
|
-
SetPoly.prototype.delete = function (value) {
|
|
48
|
-
var index = this.__setData__.indexOf(value);
|
|
49
|
-
if (index === -1)
|
|
50
|
-
return false;
|
|
51
|
-
this.__setData__.splice(index, 1);
|
|
52
|
-
return true;
|
|
53
|
-
};
|
|
54
|
-
SetPoly.prototype.has = function (value) {
|
|
55
|
-
return this.__setData__.indexOf(value) !== -1;
|
|
56
|
-
};
|
|
57
|
-
SetPoly.prototype.forEach = function (callbackfn, thisArg) {
|
|
58
|
-
if (typeof callbackfn !== 'function')
|
|
59
|
-
throw new TypeError(callbackfn + ' is not a function');
|
|
60
|
-
for (var i = 0; i < this.__setData__.length; i++) {
|
|
61
|
-
var value = this.__setData__[i];
|
|
62
|
-
callbackfn.call(thisArg, value, value, this);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
Object.defineProperty(SetPoly.prototype, "size", {
|
|
66
|
-
get: function () {
|
|
67
|
-
return this.__setData__.length;
|
|
68
|
-
},
|
|
69
|
-
enumerable: false,
|
|
70
|
-
configurable: true
|
|
71
|
-
});
|
|
72
|
-
return SetPoly;
|
|
73
|
-
}());
|
|
74
|
-
exports.SetPoly = SetPoly;
|
|
75
|
-
/**
|
|
76
|
-
* return an array containing the items of the given set.
|
|
77
|
-
* @param set Set or SetPoly instance
|
|
78
|
-
*/
|
|
79
|
-
function setToArray(set) {
|
|
80
|
-
if (set instanceof SetPoly) {
|
|
81
|
-
return set.__setData__.slice();
|
|
82
|
-
}
|
|
83
|
-
// if not using SetPoly as set, it means Array.from is supported
|
|
84
|
-
// eslint-disable-next-line compat/compat
|
|
85
|
-
return Array.from(set);
|
|
86
|
-
}
|
|
87
|
-
exports.setToArray = setToArray;
|
|
88
|
-
/**
|
|
89
|
-
* return the Set constructor to use. If `Array.from` built-in or native Set is not available or it doesn't support the required features,
|
|
90
|
-
* a ponyfill with minimal features is returned instead.
|
|
91
|
-
*
|
|
92
|
-
* Exported for testing purposes only.
|
|
93
|
-
*/
|
|
94
|
-
function __getSetConstructor() {
|
|
95
|
-
// eslint-disable-next-line compat/compat
|
|
96
|
-
if (typeof Array.from === 'function' && typeof Set === 'function' && Set.prototype && Set.prototype.values) {
|
|
97
|
-
return Set;
|
|
98
|
-
}
|
|
99
|
-
return SetPoly;
|
|
100
|
-
}
|
|
101
|
-
exports.__getSetConstructor = __getSetConstructor;
|
|
102
|
-
exports._Set = __getSetConstructor();
|
|
3
|
+
exports.returnDifference = exports.returnSetsUnion = void 0;
|
|
103
4
|
function returnSetsUnion(set, set2) {
|
|
104
|
-
|
|
105
|
-
set2.forEach(function (value) {
|
|
106
|
-
result.add(value);
|
|
107
|
-
});
|
|
108
|
-
return result;
|
|
5
|
+
return new Set(Array.from(set).concat(Array.from(set2)));
|
|
109
6
|
}
|
|
110
7
|
exports.returnSetsUnion = returnSetsUnion;
|
|
111
8
|
function returnDifference(list, list2) {
|
|
112
9
|
if (list === void 0) { list = []; }
|
|
113
10
|
if (list2 === void 0) { list2 = []; }
|
|
114
|
-
|
|
115
|
-
list2.forEach(function (item) {
|
|
116
|
-
result.delete(item);
|
|
117
|
-
});
|
|
118
|
-
return setToArray(result);
|
|
11
|
+
return list.filter(function (item) { return list2.indexOf(item) === -1; });
|
|
119
12
|
}
|
|
120
13
|
exports.returnDifference = returnDifference;
|
|
@@ -7,7 +7,6 @@ var splitFilters_1 = require("./splitFilters");
|
|
|
7
7
|
var constants_1 = require("../constants");
|
|
8
8
|
var impressionsMode_1 = require("./impressionsMode");
|
|
9
9
|
var key_1 = require("../inputValidation/key");
|
|
10
|
-
var trafficType_1 = require("../inputValidation/trafficType");
|
|
11
10
|
var constants_2 = require("../../logger/constants");
|
|
12
11
|
// Exported for telemetry
|
|
13
12
|
exports.base = {
|
|
@@ -18,8 +17,6 @@ exports.base = {
|
|
|
18
17
|
authorizationKey: undefined,
|
|
19
18
|
// key used in your system (only required for browser version)
|
|
20
19
|
key: undefined,
|
|
21
|
-
// traffic type for the given key (only used on browser version)
|
|
22
|
-
trafficType: undefined,
|
|
23
20
|
// toggle impressions tracking of labels
|
|
24
21
|
labelsEnabled: true,
|
|
25
22
|
// toggle sendind (true) or not sending (false) IP and Host Name with impressions, events, and telemetries requests (only used on nodejs version)
|
|
@@ -148,12 +145,6 @@ function settingsValidation(config, validationParams) {
|
|
|
148
145
|
// @ts-ignore, @TODO handle invalid keys as a non-recoverable error?
|
|
149
146
|
withDefaults.core.key = (0, key_1.validateKey)(log, maybeKey, constants_2.LOG_PREFIX_CLIENT_INSTANTIATION);
|
|
150
147
|
}
|
|
151
|
-
if (validationParams.acceptTT) {
|
|
152
|
-
var maybeTT = withDefaults.core.trafficType;
|
|
153
|
-
if (maybeTT !== undefined) { // @ts-ignore
|
|
154
|
-
withDefaults.core.trafficType = (0, trafficType_1.validateTrafficType)(log, maybeTT, constants_2.LOG_PREFIX_CLIENT_INSTANTIATION);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
148
|
}
|
|
158
149
|
else {
|
|
159
150
|
// On server-side, key is undefined and used to distinguish from client-side
|
|
@@ -5,9 +5,8 @@ var logger_1 = require("../../../logger");
|
|
|
5
5
|
var isLocalStorageAvailable_1 = require("../../env/isLocalStorageAvailable");
|
|
6
6
|
var isNode_1 = require("../../env/isNode");
|
|
7
7
|
var debug_1 = require("../../../logger/messages/debug");
|
|
8
|
-
var maps_1 = require("../../lang/maps");
|
|
9
8
|
var commons_1 = require("./commons");
|
|
10
|
-
var allCodes = new
|
|
9
|
+
var allCodes = new Map(debug_1.codesDebug);
|
|
11
10
|
// @TODO set default debug setting instead of initialLogLevel when integrating in JS and Node packages
|
|
12
11
|
var LS_KEY = 'splitio_debug';
|
|
13
12
|
var ENV_VAR_KEY = 'SPLITIO_DEBUG';
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateStorageCS = void 0;
|
|
3
|
+
exports.validateStorageCS = exports.__InLocalStorageMockFactory = void 0;
|
|
4
4
|
var InMemoryStorageCS_1 = require("../../../storages/inMemory/InMemoryStorageCS");
|
|
5
5
|
var constants_1 = require("../../../logger/constants");
|
|
6
6
|
var constants_2 = require("../../../utils/constants");
|
|
7
|
+
function __InLocalStorageMockFactory(params) {
|
|
8
|
+
var result = (0, InMemoryStorageCS_1.InMemoryStorageCSFactory)(params);
|
|
9
|
+
result.splits.checkCache = function () { return true; }; // to emit SDK_READY_FROM_CACHE
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
exports.__InLocalStorageMockFactory = __InLocalStorageMockFactory;
|
|
13
|
+
__InLocalStorageMockFactory.type = constants_2.STORAGE_MEMORY;
|
|
7
14
|
/**
|
|
8
15
|
* This function validates `settings.storage` object
|
|
9
16
|
*
|
|
@@ -20,6 +27,10 @@ function validateStorageCS(settings) {
|
|
|
20
27
|
storage = InMemoryStorageCS_1.InMemoryStorageCSFactory;
|
|
21
28
|
log.error(constants_1.ERROR_STORAGE_INVALID);
|
|
22
29
|
}
|
|
30
|
+
// In localhost mode with InLocalStorage, fallback to a mock InLocalStorage to emit SDK_READY_FROM_CACHE
|
|
31
|
+
if (mode === constants_2.LOCALHOST_MODE && storage.type === constants_2.STORAGE_LOCALSTORAGE) {
|
|
32
|
+
return __InLocalStorageMockFactory;
|
|
33
|
+
}
|
|
23
34
|
if ([constants_2.LOCALHOST_MODE, constants_2.STANDALONE_MODE].indexOf(mode) === -1) {
|
|
24
35
|
// Consumer modes require an async storage
|
|
25
36
|
if (storage.type !== constants_2.STORAGE_PLUGGABLE)
|
package/esm/evaluator/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Engine } from './Engine';
|
|
|
2
2
|
import { thenable } from '../utils/promise/thenable';
|
|
3
3
|
import { EXCEPTION, SPLIT_NOT_FOUND } from '../utils/labels';
|
|
4
4
|
import { CONTROL } from '../utils/constants';
|
|
5
|
-
import {
|
|
5
|
+
import { returnSetsUnion } from '../utils/lang/sets';
|
|
6
6
|
import { WARN_FLAGSET_WITHOUT_FLAGS } from '../logger/constants';
|
|
7
7
|
var treatmentException = {
|
|
8
8
|
treatment: CONTROL,
|
|
@@ -54,7 +54,7 @@ export function evaluateFeatures(log, key, splitNames, attributes, storage) {
|
|
|
54
54
|
export function evaluateFeaturesByFlagSets(log, key, flagSets, attributes, storage, method) {
|
|
55
55
|
var storedFlagNames;
|
|
56
56
|
function evaluate(featureFlagsByFlagSets) {
|
|
57
|
-
var featureFlags = new
|
|
57
|
+
var featureFlags = new Set();
|
|
58
58
|
for (var i = 0; i < flagSets.length; i++) {
|
|
59
59
|
var featureFlagByFlagSet = featureFlagsByFlagSets[i];
|
|
60
60
|
if (featureFlagByFlagSet.size) {
|
|
@@ -65,7 +65,7 @@ export function evaluateFeaturesByFlagSets(log, key, flagSets, attributes, stora
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
return featureFlags.size ?
|
|
68
|
-
evaluateFeatures(log, key,
|
|
68
|
+
evaluateFeatures(log, key, Array.from(featureFlags), attributes, storage) :
|
|
69
69
|
{};
|
|
70
70
|
}
|
|
71
71
|
// get features by flag sets
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { _Set } from '../../utils/lang/sets';
|
|
2
1
|
import { Semver } from '../../utils/Semver';
|
|
3
2
|
export function inListSemverMatcherContext(ruleAttr) {
|
|
4
3
|
// @TODO ruleAttr validation should be done at the `parser` or `matchersTransform` level to reuse for all matchers
|
|
5
4
|
if (!ruleAttr || ruleAttr.length === 0)
|
|
6
5
|
throw new Error('whitelistMatcherData is required for IN_LIST_SEMVER matcher type');
|
|
7
|
-
var listOfSemvers = new
|
|
6
|
+
var listOfSemvers = new Set(ruleAttr.map(function (version) { return new Semver(version).version; }));
|
|
8
7
|
return function inListSemverMatcher(runtimeAttr) {
|
|
9
8
|
var runtimeSemver = new Semver(runtimeAttr).version;
|
|
10
9
|
var isInList = listOfSemvers.has(runtimeSemver);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { _Set } from '../../utils/lang/sets';
|
|
2
1
|
export function whitelistMatcherContext(ruleAttr) {
|
|
3
|
-
var whitelistSet = new
|
|
2
|
+
var whitelistSet = new Set(ruleAttr);
|
|
4
3
|
return function whitelistMatcher(runtimeAttr) {
|
|
5
4
|
var isInWhitelist = whitelistSet.has(runtimeAttr);
|
|
6
5
|
return isInWhitelist;
|
package/esm/listeners/browser.js
CHANGED
|
@@ -97,7 +97,6 @@ var BrowserSignalListener = /** @class */ (function () {
|
|
|
97
97
|
* Returns true if beacon API was used successfully, false otherwise.
|
|
98
98
|
*/
|
|
99
99
|
BrowserSignalListener.prototype._sendBeacon = function (url, data, extraMetadata) {
|
|
100
|
-
// eslint-disable-next-line compat/compat
|
|
101
100
|
if (typeof navigator !== 'undefined' && navigator.sendBeacon) {
|
|
102
101
|
var json = {
|
|
103
102
|
entries: data,
|
|
@@ -110,7 +109,7 @@ var BrowserSignalListener = /** @class */ (function () {
|
|
|
110
109
|
// Stringify the payload
|
|
111
110
|
var payload = JSON.stringify(json);
|
|
112
111
|
// https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch
|
|
113
|
-
try {
|
|
112
|
+
try {
|
|
114
113
|
return navigator.sendBeacon(url, payload);
|
|
115
114
|
}
|
|
116
115
|
catch (e) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../index';
|
|
2
2
|
import { codesDebug } from '../messages/debug';
|
|
3
|
-
import { _Map } from '../../utils/lang/maps';
|
|
4
3
|
export function DebugLogger() {
|
|
5
|
-
return new Logger({ logLevel: 'DEBUG' }, new
|
|
4
|
+
return new Logger({ logLevel: 'DEBUG' }, new Map(codesDebug));
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../index';
|
|
2
2
|
import { codesError } from '../messages/error';
|
|
3
|
-
import { _Map } from '../../utils/lang/maps';
|
|
4
3
|
export function ErrorLogger() {
|
|
5
|
-
return new Logger({ logLevel: 'ERROR' }, new
|
|
4
|
+
return new Logger({ logLevel: 'ERROR' }, new Map(codesError));
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../index';
|
|
2
2
|
import { codesInfo } from '../messages/info';
|
|
3
|
-
import { _Map } from '../../utils/lang/maps';
|
|
4
3
|
export function InfoLogger() {
|
|
5
|
-
return new Logger({ logLevel: 'INFO' }, new
|
|
4
|
+
return new Logger({ logLevel: 'INFO' }, new Map(codesInfo));
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Logger } from '../index';
|
|
2
2
|
import { codesWarn } from '../messages/warn';
|
|
3
|
-
import { _Map } from '../../utils/lang/maps';
|
|
4
3
|
export function WarnLogger() {
|
|
5
|
-
return new Logger({ logLevel: 'WARN' }, new
|
|
4
|
+
return new Logger({ logLevel: 'WARN' }, new Map(codesWarn));
|
|
6
5
|
}
|
package/esm/logger/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
2
|
import { find, isObject } from '../utils/lang';
|
|
3
|
-
import { _Map } from '../utils/lang/maps';
|
|
4
3
|
export var LogLevels = {
|
|
5
4
|
DEBUG: 'DEBUG',
|
|
6
5
|
INFO: 'INFO',
|
|
@@ -42,7 +41,7 @@ var defaultOptions = {
|
|
|
42
41
|
var Logger = /** @class */ (function () {
|
|
43
42
|
function Logger(options, codes) {
|
|
44
43
|
this.options = objectAssign({}, defaultOptions, options);
|
|
45
|
-
this.codes = codes || new
|
|
44
|
+
this.codes = codes || new Map();
|
|
46
45
|
this.logLevel = LogLevelIndexes[this.options.logLevel];
|
|
47
46
|
}
|
|
48
47
|
Logger.prototype.setLogLevel = function (logLevel) {
|
|
@@ -42,14 +42,17 @@ export function readinessManagerFactory(EventEmitter, settings, splits) {
|
|
|
42
42
|
splits.once(SDK_SPLITS_CACHE_LOADED, checkIsReadyFromCache);
|
|
43
43
|
// emit SDK_READY_TIMED_OUT
|
|
44
44
|
var hasTimedout = false;
|
|
45
|
-
var readyTimeoutId;
|
|
46
45
|
function timeout() {
|
|
47
|
-
if (hasTimedout
|
|
46
|
+
if (hasTimedout)
|
|
48
47
|
return;
|
|
49
48
|
hasTimedout = true;
|
|
50
49
|
syncLastUpdate();
|
|
51
50
|
gate.emit(SDK_READY_TIMED_OUT, 'Split SDK emitted SDK_READY_TIMED_OUT event.');
|
|
52
51
|
}
|
|
52
|
+
var readyTimeoutId;
|
|
53
|
+
if (readyTimeout > 0) {
|
|
54
|
+
readyTimeoutId = setTimeout(timeout, readyTimeout);
|
|
55
|
+
}
|
|
53
56
|
// emit SDK_READY and SDK_UPDATE
|
|
54
57
|
var isReady = false;
|
|
55
58
|
splits.on(SDK_SPLITS_ARRIVED, checkIsReadyOrUpdate);
|
|
@@ -110,11 +113,6 @@ export function readinessManagerFactory(EventEmitter, settings, splits) {
|
|
|
110
113
|
// Called on 403 error (client-side SDK key on server-side), to set the SDK as destroyed for
|
|
111
114
|
// tracking and evaluations, while keeping event listeners to emit SDK_READY_TIMED_OUT event
|
|
112
115
|
setDestroyed: function () { isDestroyed = true; },
|
|
113
|
-
init: function () {
|
|
114
|
-
if (readyTimeout > 0) {
|
|
115
|
-
readyTimeoutId = setTimeout(timeout, readyTimeout);
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
116
|
destroy: function () {
|
|
119
117
|
isDestroyed = true;
|
|
120
118
|
syncLastUpdate();
|