@splitsoftware/splitio-commons 1.6.2-rc.0 → 1.6.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/sdkFactory/index.js +1 -0
- package/cjs/services/splitApi.js +1 -0
- package/cjs/utils/key/index.js +1 -1
- package/cjs/utils/settingsValidation/index.js +1 -0
- package/esm/sdkFactory/index.js +1 -0
- package/esm/services/splitApi.js +1 -0
- package/esm/utils/key/index.js +1 -1
- package/esm/utils/settingsValidation/index.js +1 -0
- package/package.json +2 -2
- package/src/consent/sdkUserConsent.ts +4 -3
- package/src/dtos/types.ts +0 -8
- package/src/evaluator/Engine.ts +3 -3
- package/src/evaluator/combiners/and.ts +1 -1
- package/src/evaluator/combiners/ifelseif.ts +3 -3
- package/src/evaluator/condition/engineUtils.ts +1 -1
- package/src/evaluator/condition/index.ts +6 -6
- package/src/evaluator/index.ts +10 -10
- package/src/evaluator/matchers/all.ts +1 -1
- package/src/evaluator/matchers/between.ts +1 -1
- package/src/evaluator/matchers/boolean.ts +1 -1
- package/src/evaluator/matchers/cont_all.ts +1 -1
- package/src/evaluator/matchers/cont_any.ts +1 -1
- package/src/evaluator/matchers/cont_str.ts +1 -1
- package/src/evaluator/matchers/dependency.ts +1 -1
- package/src/evaluator/matchers/eq.ts +1 -1
- package/src/evaluator/matchers/eq_set.ts +1 -1
- package/src/evaluator/matchers/ew.ts +1 -1
- package/src/evaluator/matchers/gte.ts +1 -1
- package/src/evaluator/matchers/index.ts +1 -1
- package/src/evaluator/matchers/lte.ts +1 -1
- package/src/evaluator/matchers/part_of.ts +1 -1
- package/src/evaluator/matchers/segment.ts +1 -1
- package/src/evaluator/matchers/string.ts +1 -1
- package/src/evaluator/matchers/sw.ts +1 -1
- package/src/evaluator/matchers/whitelist.ts +1 -1
- package/src/evaluator/parser/index.ts +3 -3
- package/src/evaluator/types.ts +6 -6
- package/src/evaluator/value/index.ts +4 -4
- package/src/evaluator/value/sanitize.ts +4 -4
- package/src/integrations/ga/GaToSplit.ts +6 -6
- package/src/integrations/ga/SplitToGa.ts +10 -10
- package/src/integrations/ga/types.ts +4 -4
- package/src/integrations/pluggable.ts +3 -3
- package/src/integrations/types.ts +2 -2
- package/src/logger/index.ts +3 -3
- package/src/logger/sdkLogger.ts +1 -2
- package/src/logger/types.ts +0 -16
- package/src/readiness/sdkReadinessManager.ts +1 -1
- package/src/readiness/types.ts +2 -9
- package/src/sdkClient/client.ts +13 -13
- package/src/sdkClient/clientAttributesDecoration.ts +9 -9
- package/src/sdkClient/clientCS.ts +3 -4
- package/src/sdkClient/clientInputValidation.ts +15 -15
- package/src/sdkClient/sdkClient.ts +2 -2
- package/src/sdkClient/sdkClientMethod.ts +2 -2
- package/src/sdkClient/sdkClientMethodCS.ts +9 -9
- package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
- package/src/sdkFactory/index.ts +3 -2
- package/src/sdkFactory/types.ts +4 -4
- package/src/sdkManager/index.ts +5 -5
- package/src/services/splitApi.ts +1 -0
- package/src/storages/dataLoader.ts +2 -2
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +2 -2
- package/src/storages/inLocalStorage/index.ts +3 -2
- package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
- package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
- package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/RedisAdapter.ts +1 -1
- package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/SplitsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
- package/src/storages/inRedis/index.ts +3 -2
- package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
- package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
- package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
- package/src/storages/pluggable/SplitsCachePluggable.ts +1 -1
- package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
- package/src/storages/pluggable/index.ts +3 -3
- package/src/storages/pluggable/wrapperAdapter.ts +1 -1
- package/src/storages/types.ts +42 -18
- package/src/sync/offline/LocalhostFromObject.ts +4 -4
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
- package/src/sync/polling/updaters/splitChangesUpdater.ts +1 -1
- package/src/sync/streaming/SSEHandler/index.ts +1 -1
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
- package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
- package/src/sync/submitters/submitter.ts +1 -1
- package/src/sync/submitters/types.ts +2 -2
- package/src/sync/syncTask.ts +1 -1
- package/src/trackers/eventTracker.ts +3 -3
- package/src/trackers/impressionsTracker.ts +3 -3
- package/src/trackers/types.ts +4 -4
- package/src/{splitio.d.ts → types.d.ts} +826 -782
- package/src/utils/constants/index.ts +1 -1
- package/src/utils/inputValidation/apiKey.ts +1 -1
- package/src/utils/inputValidation/attribute.ts +1 -1
- package/src/utils/inputValidation/attributes.ts +3 -3
- package/src/utils/inputValidation/event.ts +1 -1
- package/src/utils/inputValidation/eventProperties.ts +3 -3
- package/src/utils/inputValidation/eventValue.ts +1 -1
- package/src/utils/inputValidation/isOperational.ts +1 -1
- package/src/utils/inputValidation/key.ts +3 -3
- package/src/utils/inputValidation/preloadedData.ts +3 -3
- package/src/utils/inputValidation/split.ts +1 -1
- package/src/utils/inputValidation/splitExistance.ts +1 -1
- package/src/utils/inputValidation/splits.ts +1 -1
- package/src/utils/inputValidation/trafficType.ts +1 -1
- package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
- package/src/utils/key/index.ts +9 -9
- package/src/utils/settingsValidation/consent.ts +1 -2
- package/src/utils/settingsValidation/impressionsMode.ts +3 -3
- package/src/utils/settingsValidation/index.ts +1 -0
- package/src/utils/settingsValidation/integrations/common.ts +1 -1
- package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
- package/src/utils/settingsValidation/integrations/pluggable.ts +1 -2
- package/src/utils/settingsValidation/localhost/builtin.ts +1 -2
- package/src/utils/settingsValidation/localhost/pluggable.ts +1 -2
- package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
- package/src/utils/settingsValidation/logger/pluggableLogger.ts +1 -2
- package/src/utils/settingsValidation/splitFilters.ts +7 -9
- package/src/utils/settingsValidation/storage/storageCS.ts +1 -2
- package/types/consent/sdkUserConsent.d.ts +2 -9
- package/types/dtos/types.d.ts +0 -6
- package/types/evaluator/Engine.d.ts +3 -3
- package/types/evaluator/combiners/and.d.ts +1 -1
- package/types/evaluator/combiners/ifelseif.d.ts +1 -1
- package/types/evaluator/condition/engineUtils.d.ts +1 -1
- package/types/evaluator/condition/index.d.ts +1 -1
- package/types/evaluator/index.d.ts +4 -4
- package/types/evaluator/matchers/all.d.ts +1 -1
- package/types/evaluator/matchers/between.d.ts +1 -1
- package/types/evaluator/matchers/boolean.d.ts +1 -1
- package/types/evaluator/matchers/cont_all.d.ts +1 -1
- package/types/evaluator/matchers/cont_any.d.ts +1 -1
- package/types/evaluator/matchers/cont_str.d.ts +1 -1
- package/types/evaluator/matchers/dependency.d.ts +1 -1
- package/types/evaluator/matchers/eq.d.ts +1 -1
- package/types/evaluator/matchers/eq_set.d.ts +1 -1
- package/types/evaluator/matchers/ew.d.ts +1 -1
- package/types/evaluator/matchers/gte.d.ts +1 -1
- package/types/evaluator/matchers/index.d.ts +1 -1
- package/types/evaluator/matchers/lte.d.ts +1 -1
- package/types/evaluator/matchers/part_of.d.ts +1 -1
- package/types/evaluator/matchers/segment.d.ts +1 -1
- package/types/evaluator/matchers/string.d.ts +1 -1
- package/types/evaluator/matchers/sw.d.ts +1 -1
- package/types/evaluator/matchers/whitelist.d.ts +1 -1
- package/types/evaluator/parser/index.d.ts +1 -1
- package/types/evaluator/types.d.ts +6 -6
- package/types/evaluator/value/index.d.ts +3 -3
- package/types/evaluator/value/sanitize.d.ts +3 -3
- package/types/integrations/ga/GaToSplit.d.ts +4 -4
- package/types/integrations/ga/SplitToGa.d.ts +4 -4
- package/types/integrations/ga/types.d.ts +4 -4
- package/types/integrations/types.d.ts +2 -2
- package/types/logger/browser/{debugLogger.d.ts → DebugLogger.d.ts} +0 -0
- package/types/logger/browser/{errorLogger.d.ts → ErrorLogger.d.ts} +0 -0
- package/types/logger/browser/{infoLogger.d.ts → InfoLogger.d.ts} +0 -0
- package/types/logger/browser/{warnLogger.d.ts → WarnLogger.d.ts} +0 -0
- package/types/logger/index.d.ts +3 -5
- package/types/logger/sdkLogger.d.ts +1 -2
- package/types/logger/types.d.ts +0 -11
- package/types/readiness/sdkReadinessManager.d.ts +1 -1
- package/types/readiness/types.d.ts +2 -8
- package/types/sdkClient/client.d.ts +2 -2
- package/types/sdkClient/clientAttributesDecoration.d.ts +8 -8
- package/types/sdkClient/clientCS.d.ts +2 -3
- package/types/sdkClient/clientInputValidation.d.ts +2 -2
- package/types/sdkClient/sdkClient.d.ts +2 -2
- package/types/sdkClient/sdkClientMethod.d.ts +2 -2
- package/types/sdkClient/sdkClientMethodCS.d.ts +2 -2
- package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +2 -2
- package/types/sdkFactory/index.d.ts +2 -2
- package/types/sdkFactory/types.d.ts +6 -6
- package/types/sdkManager/index.d.ts +3 -3
- package/types/storages/dataLoader.d.ts +2 -2
- package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +1 -1
- package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +1 -2
- package/types/storages/inLocalStorage/index.d.ts +2 -2
- package/types/storages/inMemory/EventsCacheInMemory.d.ts +3 -3
- package/types/storages/inMemory/InMemoryStorage.d.ts +1 -1
- package/types/storages/inMemory/InMemoryStorageCS.d.ts +1 -1
- package/types/storages/inRedis/EventsCacheInRedis.d.ts +3 -3
- package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +1 -1
- package/types/storages/inRedis/RedisAdapter.d.ts +1 -1
- package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +1 -1
- package/types/storages/inRedis/SplitsCacheInRedis.d.ts +1 -1
- package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +1 -1
- package/types/storages/inRedis/index.d.ts +2 -2
- package/types/storages/pluggable/EventsCachePluggable.d.ts +3 -3
- package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +1 -1
- package/types/storages/pluggable/SegmentsCachePluggable.d.ts +1 -1
- package/types/storages/pluggable/SplitsCachePluggable.d.ts +1 -1
- package/types/storages/pluggable/TelemetryCachePluggable.d.ts +1 -1
- package/types/storages/pluggable/index.d.ts +3 -2
- package/types/storages/pluggable/wrapperAdapter.d.ts +1 -1
- package/types/storages/types.d.ts +42 -16
- package/types/sync/offline/LocalhostFromObject.d.ts +2 -2
- package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -1
- package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +1 -1
- package/types/sync/polling/updaters/splitChangesUpdater.d.ts +1 -1
- package/types/sync/streaming/SSEHandler/index.d.ts +1 -1
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
- package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +1 -1
- package/types/sync/submitters/submitter.d.ts +1 -1
- package/types/sync/submitters/types.d.ts +2 -2
- package/types/sync/syncTask.d.ts +1 -1
- package/types/trackers/types.d.ts +4 -4
- package/types/utils/constants/index.d.ts +1 -1
- package/types/utils/inputValidation/apiKey.d.ts +1 -1
- package/types/utils/inputValidation/attribute.d.ts +1 -1
- package/types/utils/inputValidation/attributes.d.ts +3 -3
- package/types/utils/inputValidation/event.d.ts +1 -1
- package/types/utils/inputValidation/eventProperties.d.ts +3 -3
- package/types/utils/inputValidation/eventValue.d.ts +1 -1
- package/types/utils/inputValidation/isOperational.d.ts +1 -1
- package/types/utils/inputValidation/key.d.ts +3 -3
- package/types/utils/inputValidation/preloadedData.d.ts +3 -3
- package/types/utils/inputValidation/split.d.ts +1 -1
- package/types/utils/inputValidation/splitExistance.d.ts +1 -1
- package/types/utils/inputValidation/splits.d.ts +1 -1
- package/types/utils/inputValidation/trafficType.d.ts +1 -1
- package/types/utils/inputValidation/trafficTypeExistance.d.ts +1 -1
- package/types/utils/key/index.d.ts +4 -4
- package/types/utils/settingsValidation/consent.d.ts +1 -2
- package/types/utils/settingsValidation/impressionsMode.d.ts +3 -3
- package/types/utils/settingsValidation/integrations/common.d.ts +1 -1
- package/types/utils/settingsValidation/integrations/configurable.d.ts +1 -1
- package/types/utils/settingsValidation/integrations/pluggable.d.ts +1 -2
- package/types/utils/settingsValidation/localhost/builtin.d.ts +1 -2
- package/types/utils/settingsValidation/localhost/pluggable.d.ts +1 -2
- package/types/utils/settingsValidation/logger/builtinLogger.d.ts +1 -1
- package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +1 -1
- package/types/utils/settingsValidation/splitFilters.d.ts +1 -2
- package/types/utils/settingsValidation/storage/storageCS.d.ts +2 -3
- package/cjs/types.js +0 -2
- package/esm/types.js +0 -1
- package/src/types.ts +0 -1263
- package/types/integrations/ga/GaToSplitPlugin.d.ts +0 -3
- package/types/integrations/ga/SplitToGaPlugin.d.ts +0 -4
- package/types/integrations/ga/autoRequire.d.ts +0 -4
- package/types/logger/codes.d.ts +0 -2
- package/types/logger/codesConstants.d.ts +0 -117
- package/types/logger/codesConstantsBrowser.d.ts +0 -2
- package/types/logger/codesConstantsNode.d.ts +0 -14
- package/types/logger/codesDebug.d.ts +0 -1
- package/types/logger/codesDebugBrowser.d.ts +0 -1
- package/types/logger/codesDebugNode.d.ts +0 -1
- package/types/logger/codesError.d.ts +0 -1
- package/types/logger/codesErrorNode.d.ts +0 -1
- package/types/logger/codesInfo.d.ts +0 -1
- package/types/logger/codesWarn.d.ts +0 -1
- package/types/logger/codesWarnNode.d.ts +0 -1
- package/types/logger/debugLogger.d.ts +0 -2
- package/types/logger/errorLogger.d.ts +0 -2
- package/types/logger/infoLogger.d.ts +0 -2
- package/types/logger/messages/debugBrowser.d.ts +0 -1
- package/types/logger/messages/debugNode.d.ts +0 -1
- package/types/logger/messages/errorNode.d.ts +0 -1
- package/types/logger/messages/warnNode.d.ts +0 -1
- package/types/logger/noopLogger.d.ts +0 -2
- package/types/logger/warnLogger.d.ts +0 -2
- package/types/sdkClient/types.d.ts +0 -18
- package/types/sdkFactory/userConsentProps.d.ts +0 -6
- package/types/sdkManager/sdkManagerMethod.d.ts +0 -6
- package/types/storages/getRegisteredSegments.d.ts +0 -10
- package/types/storages/inMemory/CountsCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/index.d.ts +0 -10
- package/types/storages/inRedis/CountsCacheInRedis.d.ts +0 -9
- package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +0 -9
- package/types/storages/parseSegments.d.ts +0 -6
- package/types/sync/offline/LocalhostFromFile.d.ts +0 -2
- package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +0 -2
- package/types/sync/polling/syncTasks/splitsSyncTask.copy.d.ts +0 -35
- package/types/sync/polling/syncTasks/splitsSyncTask.morelikeoriginal.d.ts +0 -35
- package/types/sync/streaming/AuthClient/indexV1.d.ts +0 -12
- package/types/sync/streaming/AuthClient/indexV2.d.ts +0 -8
- package/types/sync/streaming/pushManagerCS.d.ts +0 -1
- package/types/sync/streaming/pushManagerNoUsers.d.ts +0 -13
- package/types/sync/streaming/pushManagerSS.d.ts +0 -1
- package/types/sync/submitters/eventsSyncTask.d.ts +0 -8
- package/types/sync/submitters/impressionCountsSyncTask.d.ts +0 -13
- package/types/sync/submitters/impressionsSyncTask.d.ts +0 -14
- package/types/sync/submitters/metricsSyncTask.d.ts +0 -12
- package/types/sync/submitters/submitterSyncTask.d.ts +0 -10
- package/types/sync/submitters/telemetrySyncTask.d.ts +0 -0
- package/types/sync/submitters/uniqueKeysSubmitter.d.ts +0 -13
- package/types/sync/syncManagerFromFile.d.ts +0 -2
- package/types/sync/syncManagerFromObject.d.ts +0 -2
- package/types/sync/syncManagerOffline.d.ts +0 -9
- package/types/sync/syncTaskComposite.d.ts +0 -5
- package/types/trackers/strategy/strategyDebug.d.ts +0 -9
- package/types/trackers/strategy/strategyNone.d.ts +0 -10
- package/types/trackers/strategy/strategyOptimized.d.ts +0 -11
- package/types/trackers/telemetryRecorder.d.ts +0 -0
- package/types/trackers/uniqueKeysTracker.d.ts +0 -13
- package/types/types.d.ts +0 -1261
- package/types/utils/EventEmitter.d.ts +0 -4
- package/types/utils/consent.d.ts +0 -2
- package/types/utils/lang/errors.d.ts +0 -10
- package/types/utils/murmur3/commons.d.ts +0 -12
- package/types/utils/settingsValidation/buildMetadata.d.ts +0 -3
- package/types/utils/settingsValidation/localhost/index.d.ts +0 -9
- package/types/utils/settingsValidation/logger.d.ts +0 -11
- package/types/utils/settingsValidation/runtime/browser.d.ts +0 -2
- package/types/utils/settingsValidation/runtime/node.d.ts +0 -2
- package/types/utils/settingsValidation/userConsent.d.ts +0 -5
- package/types/utils/timeTracker/index.d.ts +0 -1
package/src/sdkFactory/types.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { IIntegrationManager, IIntegrationFactoryParams } from '../integrations/types';
|
|
2
2
|
import { ISignalListener } from '../listeners/types';
|
|
3
|
-
import { ILogger } from '../
|
|
3
|
+
import { IAsyncClientSS, IAsyncManager, IClientSS, IClientWithKey, ILogger, IManager, SplitKey } from '../types';
|
|
4
4
|
import { IReadinessManager, ISdkReadinessManager } from '../readiness/types';
|
|
5
5
|
import { IFetch, ISplitApi, IEventSourceConstructor } from '../services/types';
|
|
6
6
|
import { IStorageAsync, IStorageSync, ISplitsCacheSync, ISplitsCacheAsync, IStorageFactoryParams } from '../storages/types';
|
|
7
7
|
import { ISyncManager } from '../sync/types';
|
|
8
8
|
import { IImpressionObserver } from '../trackers/impressionObserver/types';
|
|
9
9
|
import { IImpressionsTracker, IEventTracker, ITelemetryTracker } from '../trackers/types';
|
|
10
|
-
import {
|
|
10
|
+
import { ISettings, IEventEmitter } from '../types';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Environment related dependencies.
|
|
@@ -90,11 +90,11 @@ export interface ISdkFactoryParams {
|
|
|
90
90
|
log: ILogger,
|
|
91
91
|
splits: ISplitsCacheSync | ISplitsCacheAsync,
|
|
92
92
|
sdkReadinessManager: ISdkReadinessManager
|
|
93
|
-
) =>
|
|
93
|
+
) => IManager | IAsyncManager,
|
|
94
94
|
|
|
95
95
|
// Sdk client method factory (ISDK::client method).
|
|
96
96
|
// It Allows to distinguish SDK clients with the client-side API (`ICsSDK`) or server-side API (`ISDK` or `IAsyncSDK`).
|
|
97
|
-
sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ ():
|
|
97
|
+
sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ (): IClientWithKey; (key: SplitKey, trafficType?: string | undefined): IClientWithKey; } | (() => IClientSS) | (() => IAsyncClientSS))
|
|
98
98
|
|
|
99
99
|
// Optional signal listener constructor. Used to handle special app states, like shutdown, app paused or resumed.
|
|
100
100
|
// Pass only if `syncManager` (used by Node listener) and `splitApi` (used by Browser listener) are passed.
|
package/src/sdkManager/index.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { validateSplit, validateSplitExistance, validateIfNotDestroyed, validate
|
|
|
5
5
|
import { ISplitsCacheAsync, ISplitsCacheSync } from '../storages/types';
|
|
6
6
|
import { ISdkReadinessManager } from '../readiness/types';
|
|
7
7
|
import { ISplit } from '../dtos/types';
|
|
8
|
-
import {
|
|
9
|
-
import { ILogger } from '../
|
|
8
|
+
import { IAsyncManager, IManager, SplitView } from '../types';
|
|
9
|
+
import { ILogger } from '../types';
|
|
10
10
|
|
|
11
11
|
function collectTreatments(splitObject: ISplit) {
|
|
12
12
|
const conditions = splitObject.conditions;
|
|
@@ -18,7 +18,7 @@ function collectTreatments(splitObject: ISplit) {
|
|
|
18
18
|
return allTreatmentsCondition ? allTreatmentsCondition.partitions.map(v => v.treatment) : [];
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function objectToView(json: string | null):
|
|
21
|
+
function objectToView(json: string | null): SplitView | null {
|
|
22
22
|
let splitObject: ISplit | null;
|
|
23
23
|
|
|
24
24
|
try {
|
|
@@ -41,7 +41,7 @@ function objectToView(json: string | null): SplitIO.SplitView | null {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
function objectsToViews(jsons: string[]) {
|
|
44
|
-
let views:
|
|
44
|
+
let views: SplitView[] = [];
|
|
45
45
|
|
|
46
46
|
jsons.forEach(split => {
|
|
47
47
|
const view = objectToView(split);
|
|
@@ -55,7 +55,7 @@ export function sdkManagerFactory<TSplitCache extends ISplitsCacheSync | ISplits
|
|
|
55
55
|
log: ILogger,
|
|
56
56
|
splits: TSplitCache,
|
|
57
57
|
{ readinessManager, sdkStatus }: ISdkReadinessManager
|
|
58
|
-
): TSplitCache extends ISplitsCacheAsync ?
|
|
58
|
+
): TSplitCache extends ISplitsCacheAsync ? IAsyncManager : IManager {
|
|
59
59
|
const SPLIT_FN_LABEL = 'split';
|
|
60
60
|
|
|
61
61
|
return objectAssign(
|
package/src/services/splitApi.ts
CHANGED
|
@@ -25,6 +25,7 @@ export function splitApiFactory(
|
|
|
25
25
|
): ISplitApi {
|
|
26
26
|
|
|
27
27
|
const urls = settings.urls;
|
|
28
|
+
// @ts-ignore
|
|
28
29
|
const filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
|
|
29
30
|
const SplitSDKImpressionsMode = settings.sync.impressionsMode;
|
|
30
31
|
const splitHttpClient = splitHttpClientFactory(settings, platform.getFetch, platform.getOptions);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PreloadedData } from './types';
|
|
2
2
|
import { DEFAULT_CACHE_EXPIRATION_IN_MILLIS } from '../utils/constants/browser';
|
|
3
3
|
import { DataLoader, ISegmentsCacheSync, ISplitsCacheSync } from './types';
|
|
4
4
|
|
|
@@ -9,7 +9,7 @@ import { DataLoader, ISegmentsCacheSync, ISplitsCacheSync } from './types';
|
|
|
9
9
|
* and extended with a `mySegmentsData` property.
|
|
10
10
|
* @returns function to preload the storage
|
|
11
11
|
*/
|
|
12
|
-
export function dataLoaderFactory(preloadedData:
|
|
12
|
+
export function dataLoaderFactory(preloadedData: PreloadedData): DataLoader {
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Storage-agnostic adaptation of `loadDataIntoLocalStorage` function
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ISplit
|
|
1
|
+
import { ISplit } from '../../dtos/types';
|
|
2
2
|
import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
|
|
3
3
|
import { isFiniteNumber, toNumber, isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
5
|
-
import { ILogger } from '../../
|
|
5
|
+
import { ILogger, ISplitFiltersValidation } from '../../types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
|
|
2
2
|
import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
|
|
3
3
|
import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
|
|
4
|
-
import { IStorageFactoryParams, IStorageSync
|
|
4
|
+
import { IStorageFactoryParams, IStorageSync } from '../types';
|
|
5
|
+
import { StorageSyncFactory } from '../../types';
|
|
5
6
|
import { validatePrefix } from '../KeyBuilder';
|
|
6
7
|
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
7
8
|
import { isLocalStorageAvailable } from '../../utils/env/isLocalStorageAvailable';
|
|
@@ -22,7 +23,7 @@ export interface InLocalStorageOptions {
|
|
|
22
23
|
/**
|
|
23
24
|
* InLocal storage factory for standalone client-side SplitFactory
|
|
24
25
|
*/
|
|
25
|
-
export function InLocalStorage(options: InLocalStorageOptions = {}):
|
|
26
|
+
export function InLocalStorage(options: InLocalStorageOptions = {}): StorageSyncFactory {
|
|
26
27
|
|
|
27
28
|
const prefix = validatePrefix(options.prefix);
|
|
28
29
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventData } from '../../types';
|
|
2
2
|
import { IEventsCacheSync } from '../types';
|
|
3
3
|
|
|
4
4
|
const MAX_QUEUE_BYTE_SIZE = 5 * 1024 * 1024; // 5M
|
|
@@ -7,7 +7,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
|
|
|
7
7
|
|
|
8
8
|
private onFullQueue?: () => void;
|
|
9
9
|
private readonly maxQueue: number;
|
|
10
|
-
private queue:
|
|
10
|
+
private queue: EventData[];
|
|
11
11
|
private queueByteSize: number;
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -28,7 +28,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
|
|
|
28
28
|
/**
|
|
29
29
|
* Add a new event object at the end of the queue.
|
|
30
30
|
*/
|
|
31
|
-
track(data:
|
|
31
|
+
track(data: EventData, size = 0) {
|
|
32
32
|
this.queueByteSize += size;
|
|
33
33
|
this.queue.push(data);
|
|
34
34
|
|
|
@@ -48,7 +48,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
|
|
|
48
48
|
/**
|
|
49
49
|
* Pop the collected data, used as payload for posting.
|
|
50
50
|
*/
|
|
51
|
-
pop(toMerge?:
|
|
51
|
+
pop(toMerge?: EventData[]) {
|
|
52
52
|
const data = this.queue;
|
|
53
53
|
this.clear();
|
|
54
54
|
return toMerge ? toMerge.concat(data) : data;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IEventsCacheAsync } from '../types';
|
|
2
2
|
import { IMetadata } from '../../dtos/types';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
|
-
import {
|
|
5
|
-
import { ILogger } from '../../
|
|
4
|
+
import { EventData } from '../../types';
|
|
5
|
+
import { ILogger } from '../../types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
import { StoredEventWithMetadata } from '../../sync/submitters/types';
|
|
8
8
|
|
|
@@ -24,7 +24,7 @@ export class EventsCacheInRedis implements IEventsCacheAsync {
|
|
|
24
24
|
* Add a new event object into the queue.
|
|
25
25
|
* Unlike `impressions::track`, result promise is never rejected.
|
|
26
26
|
*/
|
|
27
|
-
track(eventData:
|
|
27
|
+
track(eventData: EventData): Promise<boolean> {
|
|
28
28
|
return this.redis.rpush(
|
|
29
29
|
this.key,
|
|
30
30
|
this._toJSON(eventData)
|
|
@@ -40,7 +40,7 @@ export class EventsCacheInRedis implements IEventsCacheAsync {
|
|
|
40
40
|
/**
|
|
41
41
|
* Generates the JSON as we'll store it on Redis.
|
|
42
42
|
*/
|
|
43
|
-
private _toJSON(eventData:
|
|
43
|
+
private _toJSON(eventData: EventData): string {
|
|
44
44
|
return JSON.stringify({
|
|
45
45
|
m: this.metadata,
|
|
46
46
|
e: eventData
|
|
@@ -3,7 +3,7 @@ import { IMetadata } from '../../dtos/types';
|
|
|
3
3
|
import { ImpressionDTO } from '../../types';
|
|
4
4
|
import { Redis } from 'ioredis';
|
|
5
5
|
import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
|
|
6
|
-
import { ILogger } from '../../
|
|
6
|
+
import { ILogger } from '../../types';
|
|
7
7
|
|
|
8
8
|
const IMPRESSIONS_TTL_REFRESH = 3600; // 1 hr
|
|
9
9
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ioredis from 'ioredis';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { merge, isString } from '../../utils/lang';
|
|
4
4
|
import { _Set, setToArray, ISet } from '../../utils/lang/sets';
|
|
5
5
|
import { thenable } from '../../utils/promise/thenable';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Redis } from 'ioredis';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { LOG_PREFIX } from '../inLocalStorage/constants';
|
|
5
5
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
2
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { LOG_PREFIX } from './constants';
|
|
6
6
|
import { ISplit } from '../../dtos/types';
|
|
7
7
|
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RedisAdapter } from './RedisAdapter';
|
|
2
|
-
import { IStorageAsync,
|
|
2
|
+
import { IStorageAsync, IStorageFactoryParams } from '../types';
|
|
3
|
+
import { StorageAsyncFactory } from '../../types';
|
|
3
4
|
import { validatePrefix } from '../KeyBuilder';
|
|
4
5
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
5
6
|
import { SplitsCacheInRedis } from './SplitsCacheInRedis';
|
|
@@ -18,7 +19,7 @@ export interface InRedisStorageOptions {
|
|
|
18
19
|
* InRedis storage factory for consumer server-side SplitFactory, that uses `Ioredis` Redis client for Node.
|
|
19
20
|
* @see {@link https://www.npmjs.com/package/ioredis}
|
|
20
21
|
*/
|
|
21
|
-
export function InRedisStorage(options: InRedisStorageOptions = {}):
|
|
22
|
+
export function InRedisStorage(options: InRedisStorageOptions = {}): StorageAsyncFactory {
|
|
22
23
|
|
|
23
24
|
const prefix = validatePrefix(options.prefix);
|
|
24
25
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IPluggableStorageWrapper, IEventsCacheAsync } from '../types';
|
|
2
2
|
import { IMetadata } from '../../dtos/types';
|
|
3
|
-
import {
|
|
4
|
-
import { ILogger } from '../../
|
|
3
|
+
import { EventData } from '../../types';
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { LOG_PREFIX } from './constants';
|
|
6
6
|
import { StoredEventWithMetadata } from '../../sync/submitters/types';
|
|
7
7
|
|
|
@@ -25,7 +25,7 @@ export class EventsCachePluggable implements IEventsCacheAsync {
|
|
|
25
25
|
* @returns A promise that is resolved with a boolean value indicating if the push operation succeeded or failed.
|
|
26
26
|
* Unlike `impressions::track`, The promise will never be rejected.
|
|
27
27
|
*/
|
|
28
|
-
track(eventData:
|
|
28
|
+
track(eventData: EventData): Promise<boolean> {
|
|
29
29
|
return this.wrapper.pushItems(
|
|
30
30
|
this.key,
|
|
31
31
|
[this._toJSON(eventData)]
|
|
@@ -38,7 +38,7 @@ export class EventsCachePluggable implements IEventsCacheAsync {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
private _toJSON(eventData:
|
|
41
|
+
private _toJSON(eventData: EventData): string {
|
|
42
42
|
return JSON.stringify({
|
|
43
43
|
m: this.metadata,
|
|
44
44
|
e: eventData
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IPluggableStorageWrapper, IImpressionsCacheAsync } from '../types';
|
|
2
2
|
import { IMetadata } from '../../dtos/types';
|
|
3
3
|
import { ImpressionDTO } from '../../types';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
|
|
6
6
|
|
|
7
7
|
export class ImpressionsCachePluggable implements IImpressionsCacheAsync {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
5
5
|
import { IPluggableStorageWrapper, ISegmentsCacheAsync } from '../types';
|
|
6
|
-
import { ILogger } from '../../
|
|
6
|
+
import { ILogger } from '../../types';
|
|
7
7
|
import { LOG_PREFIX } from './constants';
|
|
8
8
|
import { _Set } from '../../utils/lang/sets';
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
2
|
import { KeyBuilder } from '../KeyBuilder';
|
|
3
3
|
import { IPluggableStorageWrapper } from '../types';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { ISplit } from '../../dtos/types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IPluggableStorageWrapper, IStorageAsync,
|
|
2
|
-
|
|
1
|
+
import { IPluggableStorageWrapper, IStorageAsync, IStorageFactoryParams } from '../types';
|
|
2
|
+
import { StorageAsyncFactory } from '../../types';
|
|
3
3
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
4
4
|
import { SplitsCachePluggable } from './SplitsCachePluggable';
|
|
5
5
|
import { SegmentsCachePluggable } from './SegmentsCachePluggable';
|
|
@@ -58,7 +58,7 @@ function promisifyEventsTrack(events: any) {
|
|
|
58
58
|
/**
|
|
59
59
|
* Pluggable storage factory for consumer server-side & client-side SplitFactory.
|
|
60
60
|
*/
|
|
61
|
-
export function PluggableStorage(options: PluggableStorageOptions):
|
|
61
|
+
export function PluggableStorage(options: PluggableStorageOptions): StorageAsyncFactory {
|
|
62
62
|
|
|
63
63
|
validatePluggableStorageOptions(options);
|
|
64
64
|
|
package/src/storages/types.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { MaybeThenable, IMetadata
|
|
2
|
-
import { ILogger } from '../logger/types';
|
|
1
|
+
import { MaybeThenable, IMetadata } from '../dtos/types';
|
|
3
2
|
import { EventDataType, HttpErrors, HttpLatencies, ImpressionDataType, LastSync, Method, MethodExceptions, MethodLatencies, OperationType, StoredEventWithMetadata, StoredImpressionWithMetadata, StreamingEvent } from '../sync/submitters/types';
|
|
4
|
-
import {
|
|
3
|
+
import { ImpressionDTO, SDKMode, ILogger, EventData, ISplitFiltersValidation } from '../types';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Interface of a pluggable storage wrapper.
|
|
@@ -289,7 +288,7 @@ export interface IImpressionsCacheBase {
|
|
|
289
288
|
|
|
290
289
|
export interface IEventsCacheBase {
|
|
291
290
|
// Consumer API method, used by events tracker, in standalone and consumer modes, to push events into the storage.
|
|
292
|
-
track(data:
|
|
291
|
+
track(data: EventData, size?: number): MaybeThenable<boolean>
|
|
293
292
|
}
|
|
294
293
|
|
|
295
294
|
/** Impressions and events cache for standalone mode (sync) */
|
|
@@ -312,8 +311,8 @@ export interface IImpressionsCacheSync extends IImpressionsCacheBase, IRecorderC
|
|
|
312
311
|
setOnFullQueueCb(cb: () => void): void
|
|
313
312
|
}
|
|
314
313
|
|
|
315
|
-
export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<
|
|
316
|
-
track(data:
|
|
314
|
+
export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<EventData[]> {
|
|
315
|
+
track(data: EventData, size?: number): boolean
|
|
317
316
|
/* Registers callback for full queue */
|
|
318
317
|
setOnFullQueueCb(cb: () => void): void
|
|
319
318
|
}
|
|
@@ -339,7 +338,7 @@ export interface IImpressionsCacheAsync extends IImpressionsCacheBase, IRecorder
|
|
|
339
338
|
export interface IEventsCacheAsync extends IEventsCacheBase, IRecorderCacheProducerAsync<StoredEventWithMetadata[]> {
|
|
340
339
|
// Consumer API method, used by events tracker (in standalone and consumer modes) to push data into.
|
|
341
340
|
// The result promise cannot reject.
|
|
342
|
-
track(data:
|
|
341
|
+
track(data: EventData, size?: number): Promise<boolean>
|
|
343
342
|
}
|
|
344
343
|
|
|
345
344
|
/**
|
|
@@ -352,7 +351,7 @@ export interface IImpressionCountsCacheSync extends IRecorderCacheProducerSync<R
|
|
|
352
351
|
|
|
353
352
|
// Used by impressions count submitter in standalone and producer mode
|
|
354
353
|
isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
|
|
355
|
-
pop(toMerge?: Record<string, number>
|
|
354
|
+
pop(toMerge?: Record<string, number>): Record<string, number> // pop cache data
|
|
356
355
|
}
|
|
357
356
|
|
|
358
357
|
|
|
@@ -495,14 +494,39 @@ export interface IStorageFactoryParams {
|
|
|
495
494
|
metadata: IMetadata,
|
|
496
495
|
}
|
|
497
496
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
497
|
+
/**
|
|
498
|
+
* Defines the format of Split data to preload on the factory storage (cache).
|
|
499
|
+
*/
|
|
500
|
+
export interface PreloadedData {
|
|
501
|
+
/**
|
|
502
|
+
* Timestamp of the last moment the data was synchronized with Split servers.
|
|
503
|
+
* If this value is older than 10 days ago (expiration time policy), the data is not used to update the storage content.
|
|
504
|
+
* @TODO configurable expiration time policy?
|
|
505
|
+
*/
|
|
506
|
+
lastUpdated: number,
|
|
507
|
+
/**
|
|
508
|
+
* Change number of the preloaded data.
|
|
509
|
+
* If this value is older than the current changeNumber at the storage, the data is not used to update the storage content.
|
|
510
|
+
*/
|
|
511
|
+
since: number,
|
|
512
|
+
/**
|
|
513
|
+
* Map of splits to their serialized definitions.
|
|
514
|
+
*/
|
|
515
|
+
splitsData: {
|
|
516
|
+
[splitName: string]: string
|
|
517
|
+
},
|
|
518
|
+
/**
|
|
519
|
+
* Optional map of user keys to their list of segments.
|
|
520
|
+
* @TODO remove when releasing first version
|
|
521
|
+
*/
|
|
522
|
+
mySegmentsData?: {
|
|
523
|
+
[key: string]: string[]
|
|
524
|
+
},
|
|
525
|
+
/**
|
|
526
|
+
* Optional map of segments to their serialized definitions.
|
|
527
|
+
* This property is ignored if `mySegmentsData` was provided.
|
|
528
|
+
*/
|
|
529
|
+
segmentsData?: {
|
|
530
|
+
[segmentName: string]: string
|
|
531
|
+
},
|
|
508
532
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { splitsParserFromSettingsFactory } from './splitsParser/splitsParserFromSettings';
|
|
2
2
|
import { syncManagerOfflineFactory } from './syncManagerOffline';
|
|
3
|
-
import {
|
|
3
|
+
import { LocalhostFactory } from '../../types';
|
|
4
4
|
|
|
5
5
|
// Singleton instance of the factory function for offline SyncManager from object (a.k.a. localhostFromObject)
|
|
6
6
|
// SDK instances instantiate their SyncManagers with the same factory
|
|
7
|
-
const localhostFromObject = syncManagerOfflineFactory(splitsParserFromSettingsFactory)
|
|
7
|
+
const localhostFromObject: any = syncManagerOfflineFactory(splitsParserFromSettingsFactory);
|
|
8
8
|
localhostFromObject.type = 'LocalhostFromObject';
|
|
9
9
|
|
|
10
|
-
export function LocalhostFromObject()
|
|
11
|
-
return localhostFromObject;
|
|
10
|
+
export function LocalhostFromObject() {
|
|
11
|
+
return localhostFromObject as LocalhostFactory;
|
|
12
12
|
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { ISplitPartial } from '../../../dtos/types';
|
|
2
|
-
import { ISettings,
|
|
2
|
+
import { ISettings, MockedFeaturesMap, TreatmentWithConfig } from '../../../types';
|
|
3
3
|
import { isObject, forOwn } from '../../../utils/lang';
|
|
4
4
|
import { parseCondition } from './parseCondition';
|
|
5
5
|
|
|
6
|
-
function hasTreatmentChanged(prev: string |
|
|
6
|
+
function hasTreatmentChanged(prev: string | TreatmentWithConfig, curr: string | TreatmentWithConfig) {
|
|
7
7
|
if (typeof prev !== typeof curr) return true;
|
|
8
8
|
|
|
9
9
|
if (typeof prev === 'string') { // strings treatments, just compare
|
|
10
10
|
return prev !== curr;
|
|
11
11
|
} else { // has treatment and config, compare both
|
|
12
|
-
return prev.treatment !== (curr as
|
|
12
|
+
return prev.treatment !== (curr as TreatmentWithConfig).treatment || prev.config !== (curr as TreatmentWithConfig).config;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export function splitsParserFromSettingsFactory() {
|
|
17
17
|
|
|
18
|
-
let previousMock:
|
|
18
|
+
let previousMock: MockedFeaturesMap = { 'emptyMock': '1' };
|
|
19
19
|
|
|
20
|
-
function mockUpdated(currentData:
|
|
20
|
+
function mockUpdated(currentData: MockedFeaturesMap) {
|
|
21
21
|
const names = Object.keys(currentData);
|
|
22
22
|
|
|
23
23
|
// Different amount of items
|
|
@@ -42,7 +42,7 @@ export function splitsParserFromSettingsFactory() {
|
|
|
42
42
|
* @param settings validated object with mocked features mapping.
|
|
43
43
|
*/
|
|
44
44
|
return function splitsParserFromSettings(settings: ISettings): false | Record<string, ISplitPartial> {
|
|
45
|
-
const features = settings.features as
|
|
45
|
+
const features = settings.features as MockedFeaturesMap || {};
|
|
46
46
|
|
|
47
47
|
if (!mockUpdated(features)) return false;
|
|
48
48
|
|
|
@@ -53,8 +53,8 @@ export function splitsParserFromSettingsFactory() {
|
|
|
53
53
|
let config = null;
|
|
54
54
|
|
|
55
55
|
if (isObject(data)) {
|
|
56
|
-
treatment = (data as
|
|
57
|
-
config = (data as
|
|
56
|
+
treatment = (data as TreatmentWithConfig).treatment;
|
|
57
|
+
config = (data as TreatmentWithConfig).config || config;
|
|
58
58
|
}
|
|
59
59
|
const configurations: Record<string, string> = {};
|
|
60
60
|
if (config !== null) configurations[treatment as string] = config;
|
|
@@ -3,7 +3,7 @@ import { ISegmentsCacheSync, ISplitsCacheSync } from '../../../storages/types';
|
|
|
3
3
|
import { ISegmentsEventEmitter } from '../../../readiness/types';
|
|
4
4
|
import { timeout } from '../../../utils/promise/timeout';
|
|
5
5
|
import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
6
|
-
import { ILogger } from '../../../
|
|
6
|
+
import { ILogger } from '../../../types';
|
|
7
7
|
import { SYNC_MYSEGMENTS_FETCH_RETRY } from '../../../logger/constants';
|
|
8
8
|
import { MySegmentsData } from '../types';
|
|
9
9
|
|
|
@@ -4,7 +4,7 @@ import { IReadinessManager } from '../../../readiness/types';
|
|
|
4
4
|
import { MaybeThenable } from '../../../dtos/types';
|
|
5
5
|
import { findIndex } from '../../../utils/lang';
|
|
6
6
|
import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
7
|
-
import { ILogger } from '../../../
|
|
7
|
+
import { ILogger } from '../../../types';
|
|
8
8
|
import { LOG_PREFIX_INSTANTIATION, LOG_PREFIX_SYNC_SEGMENTS } from '../../../logger/constants';
|
|
9
9
|
import { thenable } from '../../../utils/promise/thenable';
|
|
10
10
|
|
|
@@ -5,7 +5,7 @@ import { ISplit, ISplitChangesResponse } from '../../../dtos/types';
|
|
|
5
5
|
import { ISplitsEventEmitter } from '../../../readiness/types';
|
|
6
6
|
import { timeout } from '../../../utils/promise/timeout';
|
|
7
7
|
import { SDK_SPLITS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../../../readiness/constants';
|
|
8
|
-
import { ILogger } from '../../../
|
|
8
|
+
import { ILogger } from '../../../types';
|
|
9
9
|
import { SYNC_SPLITS_FETCH, SYNC_SPLITS_NEW, SYNC_SPLITS_REMOVED, SYNC_SPLITS_SEGMENTS, SYNC_SPLITS_FETCH_FAILS, SYNC_SPLITS_FETCH_RETRY } from '../../../logger/constants';
|
|
10
10
|
|
|
11
11
|
type ISplitChangesUpdater = (noCache?: boolean, till?: number) => Promise<boolean>
|
|
@@ -4,7 +4,7 @@ import { PUSH_RETRYABLE_ERROR, PUSH_NONRETRYABLE_ERROR, OCCUPANCY, CONTROL, MY_S
|
|
|
4
4
|
import { IPushEventEmitter } from '../types';
|
|
5
5
|
import { ISseEventHandler } from '../SSEClient/types';
|
|
6
6
|
import { INotificationError, INotificationMessage } from './types';
|
|
7
|
-
import { ILogger } from '../../../
|
|
7
|
+
import { ILogger } from '../../../types';
|
|
8
8
|
import { STREAMING_PARSING_ERROR_FAILS, ERROR_STREAMING_SSE, STREAMING_PARSING_MESSAGE_FAILS, STREAMING_NEW_MESSAGE } from '../../../logger/constants';
|
|
9
9
|
import { ABLY_ERROR, NON_REQUESTED, SSE_CONNECTION_ERROR } from '../../../utils/constants';
|
|
10
10
|
import { ITelemetryTracker } from '../../../trackers/types';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ILogger } from '../../../
|
|
1
|
+
import { ILogger } from '../../../types';
|
|
2
2
|
import { SDK_SPLITS_ARRIVED } from '../../../readiness/constants';
|
|
3
3
|
import { ISplitsEventEmitter } from '../../../readiness/types';
|
|
4
4
|
import { ISplitsCacheSync } from '../../../storages/types';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { syncTaskFactory } from '../syncTask';
|
|
2
2
|
import { ISyncTask } from '../types';
|
|
3
3
|
import { IRecorderCacheProducerSync } from '../../storages/types';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { SUBMITTERS_PUSH, SUBMITTERS_PUSH_FAILS, SUBMITTERS_PUSH_RETRY } from '../../logger/constants';
|
|
6
6
|
import { IResponse } from '../../services/types';
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IMetadata } from '../../dtos/types';
|
|
2
|
-
import {
|
|
2
|
+
import { EventData } from '../../types';
|
|
3
3
|
import { ISyncTask } from '../types';
|
|
4
4
|
|
|
5
5
|
export type ImpressionsPayload = {
|
|
@@ -61,7 +61,7 @@ export type StoredEventWithMetadata = {
|
|
|
61
61
|
/** Metadata */
|
|
62
62
|
m: IMetadata,
|
|
63
63
|
/** Stored event */
|
|
64
|
-
e:
|
|
64
|
+
e: EventData
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
package/src/sync/syncTask.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { objectAssign } from '../utils/lang/objectAssign';
|
|
|
2
2
|
import { thenable } from '../utils/promise/thenable';
|
|
3
3
|
import { IEventsCacheBase, ITelemetryCacheAsync, ITelemetryCacheSync } from '../storages/types';
|
|
4
4
|
import { IEventsHandler, IEventTracker } from './types';
|
|
5
|
-
import { ISettings,
|
|
5
|
+
import { ISettings, EventData } from '../types';
|
|
6
6
|
import { EVENTS_TRACKER_SUCCESS, ERROR_EVENTS_TRACKER } from '../logger/constants';
|
|
7
7
|
import { CONSENT_DECLINED, DROPPED, QUEUED } from '../utils/constants';
|
|
8
8
|
import { isStorageSync } from './impressionObserver/utils';
|
|
@@ -23,7 +23,7 @@ export function eventTrackerFactory(
|
|
|
23
23
|
const log = settings.log;
|
|
24
24
|
const isSync = isStorageSync(settings);
|
|
25
25
|
|
|
26
|
-
function queueEventsCallback(eventData:
|
|
26
|
+
function queueEventsCallback(eventData: EventData, tracked: boolean) {
|
|
27
27
|
const { eventTypeId, trafficTypeName, key, value, timestamp, properties } = eventData;
|
|
28
28
|
// Logging every prop would be too much.
|
|
29
29
|
const msg = `event of type "${eventTypeId}" for traffic type "${trafficTypeName}". Key: ${key}. Value: ${value}. Timestamp: ${timestamp}. ${properties ? 'With properties.' : 'With no properties.'}`;
|
|
@@ -48,7 +48,7 @@ export function eventTrackerFactory(
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
return {
|
|
51
|
-
track(eventData:
|
|
51
|
+
track(eventData: EventData, size?: number) {
|
|
52
52
|
if (settings.userConsent === CONSENT_DECLINED) {
|
|
53
53
|
return isSync ? false : Promise.resolve(false);
|
|
54
54
|
}
|