@splitsoftware/splitio-commons 1.6.2-rc.1 → 1.6.2-rc.4
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/listeners/browser.js +1 -2
- package/cjs/logger/constants.js +1 -2
- package/cjs/sdkClient/clientAttributesDecoration.js +1 -1
- package/cjs/sdkFactory/index.js +6 -13
- package/cjs/services/splitApi.js +1 -20
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/cjs/sync/submitters/submitterManager.js +0 -3
- package/cjs/trackers/impressionsTracker.js +28 -7
- package/cjs/utils/constants/index.js +2 -3
- package/cjs/utils/key/index.js +1 -1
- package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
- package/cjs/utils/settingsValidation/index.js +1 -3
- package/esm/listeners/browser.js +2 -3
- package/esm/logger/constants.js +0 -1
- package/esm/sdkClient/clientAttributesDecoration.js +1 -1
- package/esm/sdkFactory/index.js +6 -13
- package/esm/services/splitApi.js +1 -20
- package/esm/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/esm/sync/submitters/submitterManager.js +0 -3
- package/esm/trackers/impressionsTracker.js +28 -7
- package/esm/utils/constants/index.js +0 -1
- package/esm/utils/key/index.js +1 -1
- package/esm/utils/settingsValidation/impressionsMode.js +3 -3
- package/esm/utils/settingsValidation/index.js +1 -3
- package/package.json +4 -5
- 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/listeners/browser.ts +2 -3
- package/src/logger/.DS_Store +0 -0
- package/src/logger/constants.ts +0 -1
- 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 +13 -13
- 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 +8 -17
- package/src/sdkFactory/types.ts +8 -11
- package/src/sdkManager/index.ts +5 -5
- package/src/services/splitApi.ts +1 -22
- package/src/services/types.ts +0 -6
- 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/AttributesCacheInMemory.ts +13 -12
- 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 +46 -35
- 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/submitterManager.ts +0 -2
- package/src/sync/submitters/types.ts +3 -22
- package/src/sync/syncTask.ts +1 -1
- package/src/trackers/eventTracker.ts +3 -3
- package/src/trackers/impressionsTracker.ts +37 -15
- package/src/trackers/types.ts +4 -34
- package/src/types.d.ts +1581 -0
- package/src/utils/constants/index.ts +1 -2
- 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 +6 -6
- package/src/utils/settingsValidation/index.ts +1 -4
- 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/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -70
- package/cjs/trackers/strategy/strategyDebug.js +0 -25
- package/cjs/trackers/strategy/strategyNone.js +0 -29
- package/cjs/trackers/strategy/strategyOptimized.js +0 -34
- package/cjs/trackers/uniqueKeysTracker.js +0 -69
- package/cjs/types.js +0 -2
- package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -64
- package/esm/trackers/strategy/strategyDebug.js +0 -21
- package/esm/trackers/strategy/strategyNone.js +0 -25
- package/esm/trackers/strategy/strategyOptimized.js +0 -30
- package/esm/trackers/uniqueKeysTracker.js +0 -65
- package/esm/types.js +0 -1
- package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -79
- package/src/trackers/strategy/strategyDebug.ts +0 -28
- package/src/trackers/strategy/strategyNone.ts +0 -34
- package/src/trackers/strategy/strategyOptimized.ts +0 -42
- package/src/trackers/uniqueKeysTracker.ts +0 -80
- package/src/types.ts +0 -1264
- package/types/consent/index.d.ts +0 -2
- package/types/consent/sdkUserConsent.d.ts +0 -13
- package/types/dtos/types.d.ts +0 -172
- package/types/evaluator/Engine.d.ts +0 -15
- package/types/evaluator/combiners/and.d.ts +0 -4
- package/types/evaluator/combiners/ifelseif.d.ts +0 -3
- package/types/evaluator/condition/engineUtils.d.ts +0 -11
- package/types/evaluator/condition/index.d.ts +0 -6
- package/types/evaluator/convertions/index.d.ts +0 -2
- package/types/evaluator/index.d.ts +0 -7
- package/types/evaluator/matchers/all.d.ts +0 -2
- package/types/evaluator/matchers/between.d.ts +0 -3
- package/types/evaluator/matchers/boolean.d.ts +0 -2
- package/types/evaluator/matchers/cont_all.d.ts +0 -2
- package/types/evaluator/matchers/cont_any.d.ts +0 -2
- package/types/evaluator/matchers/cont_str.d.ts +0 -2
- package/types/evaluator/matchers/dependency.d.ts +0 -5
- package/types/evaluator/matchers/eq.d.ts +0 -2
- package/types/evaluator/matchers/eq_set.d.ts +0 -2
- package/types/evaluator/matchers/ew.d.ts +0 -2
- package/types/evaluator/matchers/gte.d.ts +0 -2
- package/types/evaluator/matchers/index.d.ts +0 -7
- package/types/evaluator/matchers/lte.d.ts +0 -2
- package/types/evaluator/matchers/matcherTypes.d.ts +0 -10
- package/types/evaluator/matchers/part_of.d.ts +0 -2
- package/types/evaluator/matchers/segment.d.ts +0 -6
- package/types/evaluator/matchers/string.d.ts +0 -2
- package/types/evaluator/matchers/sw.d.ts +0 -2
- package/types/evaluator/matchers/whitelist.d.ts +0 -3
- package/types/evaluator/matchersTransform/index.d.ts +0 -6
- package/types/evaluator/matchersTransform/segment.d.ts +0 -5
- package/types/evaluator/matchersTransform/set.d.ts +0 -5
- package/types/evaluator/matchersTransform/unaryNumeric.d.ts +0 -5
- package/types/evaluator/matchersTransform/whitelist.d.ts +0 -5
- package/types/evaluator/parser/index.d.ts +0 -5
- package/types/evaluator/treatments/index.d.ts +0 -8
- package/types/evaluator/types.d.ts +0 -28
- package/types/evaluator/value/index.d.ts +0 -7
- package/types/evaluator/value/sanitize.d.ts +0 -7
- package/types/index.d.ts +0 -5
- package/types/integrations/browser.d.ts +0 -12
- package/types/integrations/ga/GaToSplit.d.ts +0 -40
- package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +0 -3
- package/types/integrations/ga/SplitToGa.d.ts +0 -34
- package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +0 -3
- package/types/integrations/ga/types.d.ts +0 -148
- package/types/integrations/pluggable.d.ts +0 -11
- package/types/integrations/types.d.ts +0 -17
- package/types/listeners/browser.d.ts +0 -40
- package/types/listeners/node.d.ts +0 -22
- package/types/listeners/types.d.ts +0 -4
- package/types/logger/browser/DebugLogger.d.ts +0 -2
- package/types/logger/browser/ErrorLogger.d.ts +0 -2
- package/types/logger/browser/InfoLogger.d.ts +0 -2
- package/types/logger/browser/WarnLogger.d.ts +0 -2
- package/types/logger/constants.d.ts +0 -142
- package/types/logger/index.d.ts +0 -22
- package/types/logger/messages/debug.d.ts +0 -1
- package/types/logger/messages/error.d.ts +0 -1
- package/types/logger/messages/info.d.ts +0 -1
- package/types/logger/messages/warn.d.ts +0 -1
- package/types/logger/sdkLogger.d.ts +0 -8
- package/types/logger/types.d.ts +0 -17
- package/types/readiness/constants.d.ts +0 -7
- package/types/readiness/readinessManager.d.ts +0 -6
- package/types/readiness/sdkReadinessManager.d.ts +0 -11
- package/types/readiness/types.d.ts +0 -60
- package/types/sdkClient/client.d.ts +0 -6
- package/types/sdkClient/clientAttributesDecoration.d.ts +0 -51
- package/types/sdkClient/clientCS.d.ts +0 -10
- package/types/sdkClient/clientInputValidation.d.ts +0 -7
- package/types/sdkClient/sdkClient.d.ts +0 -6
- package/types/sdkClient/sdkClientMethod.d.ts +0 -6
- package/types/sdkClient/sdkClientMethodCS.d.ts +0 -7
- package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +0 -8
- package/types/sdkClient/types.d.ts +0 -18
- package/types/sdkFactory/index.d.ts +0 -6
- package/types/sdkFactory/types.d.ts +0 -82
- package/types/sdkManager/index.d.ts +0 -5
- package/types/services/splitApi.d.ts +0 -11
- package/types/services/splitHttpClient.d.ts +0 -10
- package/types/services/types.d.ts +0 -54
- package/types/storages/AbstractSegmentsCacheSync.d.ts +0 -55
- package/types/storages/AbstractSplitsCacheAsync.d.ts +0 -36
- package/types/storages/AbstractSplitsCacheSync.d.ts +0 -42
- package/types/storages/KeyBuilder.d.ts +0 -14
- package/types/storages/KeyBuilderCS.d.ts +0 -16
- package/types/storages/KeyBuilderSS.d.ts +0 -15
- package/types/storages/dataLoader.d.ts +0 -10
- package/types/storages/findLatencyIndex.d.ts +0 -7
- package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +0 -25
- package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +0 -51
- package/types/storages/inLocalStorage/constants.d.ts +0 -2
- package/types/storages/inLocalStorage/index.d.ts +0 -8
- package/types/storages/inMemory/AttributesCacheInMemory.d.ts +0 -43
- package/types/storages/inMemory/CountsCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/EventsCacheInMemory.d.ts +0 -35
- package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +0 -24
- package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +0 -30
- package/types/storages/inMemory/InMemoryStorage.d.ts +0 -10
- package/types/storages/inMemory/InMemoryStorageCS.d.ts +0 -10
- package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +0 -22
- package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +0 -19
- package/types/storages/inMemory/SplitsCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +0 -53
- package/types/storages/inRedis/CountsCacheInRedis.d.ts +0 -9
- package/types/storages/inRedis/EventsCacheInRedis.d.ts +0 -32
- package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +0 -18
- package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +0 -9
- package/types/storages/inRedis/RedisAdapter.d.ts +0 -24
- package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +0 -18
- package/types/storages/inRedis/SplitsCacheInRedis.d.ts +0 -91
- package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +0 -20
- package/types/storages/inRedis/constants.d.ts +0 -1
- package/types/storages/inRedis/index.d.ts +0 -10
- package/types/storages/metadataBuilder.d.ts +0 -3
- package/types/storages/pluggable/EventsCachePluggable.d.ts +0 -38
- package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +0 -35
- package/types/storages/pluggable/SegmentsCachePluggable.d.ts +0 -54
- package/types/storages/pluggable/SplitsCachePluggable.d.ts +0 -89
- package/types/storages/pluggable/TelemetryCachePluggable.d.ts +0 -18
- package/types/storages/pluggable/constants.d.ts +0 -1
- package/types/storages/pluggable/inMemoryWrapper.d.ts +0 -13
- package/types/storages/pluggable/index.d.ts +0 -9
- package/types/storages/pluggable/wrapperAdapter.d.ts +0 -12
- package/types/storages/types.d.ts +0 -417
- package/types/sync/offline/LocalhostFromFile.d.ts +0 -2
- package/types/sync/offline/LocalhostFromObject.d.ts +0 -2
- package/types/sync/offline/splitsParser/parseCondition.d.ts +0 -7
- package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +0 -2
- package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +0 -3
- package/types/sync/offline/splitsParser/types.d.ts +0 -3
- package/types/sync/offline/syncManagerOffline.d.ts +0 -10
- package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +0 -17
- package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +0 -7
- package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +0 -7
- package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +0 -7
- package/types/sync/polling/fetchers/types.d.ts +0 -5
- package/types/sync/polling/pollingManagerCS.d.ts +0 -7
- package/types/sync/polling/pollingManagerSS.d.ts +0 -6
- package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +0 -9
- package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +0 -9
- package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +0 -9
- package/types/sync/polling/types.d.ts +0 -26
- package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +0 -13
- package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +0 -18
- package/types/sync/polling/updaters/splitChangesUpdater.d.ts +0 -39
- package/types/sync/streaming/AuthClient/index.d.ts +0 -12
- package/types/sync/streaming/AuthClient/types.d.ts +0 -17
- package/types/sync/streaming/SSEClient/index.d.ts +0 -34
- package/types/sync/streaming/SSEClient/types.d.ts +0 -11
- package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +0 -14
- package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +0 -20
- package/types/sync/streaming/SSEHandler/index.d.ts +0 -11
- package/types/sync/streaming/SSEHandler/types.d.ts +0 -67
- package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +0 -6
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +0 -8
- package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +0 -12
- package/types/sync/streaming/UpdateWorkers/constants.d.ts +0 -3
- package/types/sync/streaming/UpdateWorkers/types.d.ts +0 -4
- package/types/sync/streaming/constants.d.ts +0 -34
- package/types/sync/streaming/mySegmentsV2utils.d.ts +0 -27
- package/types/sync/streaming/pushManager.d.ts +0 -9
- package/types/sync/streaming/types.d.ts +0 -35
- package/types/sync/submitters/eventsSubmitter.d.ts +0 -5
- package/types/sync/submitters/eventsSyncTask.d.ts +0 -8
- package/types/sync/submitters/impressionCountsSubmitter.d.ts +0 -10
- package/types/sync/submitters/impressionCountsSyncTask.d.ts +0 -13
- package/types/sync/submitters/impressionsSubmitter.d.ts +0 -11
- package/types/sync/submitters/impressionsSyncTask.d.ts +0 -14
- package/types/sync/submitters/metricsSyncTask.d.ts +0 -12
- package/types/sync/submitters/submitter.d.ts +0 -12
- package/types/sync/submitters/submitterManager.d.ts +0 -3
- package/types/sync/submitters/submitterSyncTask.d.ts +0 -10
- package/types/sync/submitters/telemetrySubmitter.d.ts +0 -25
- package/types/sync/submitters/types.d.ts +0 -194
- package/types/sync/submitters/uniqueKeysSubmitter.d.ts +0 -19
- package/types/sync/syncManagerOnline.d.ts +0 -13
- package/types/sync/syncTask.d.ts +0 -13
- package/types/sync/syncTaskComposite.d.ts +0 -5
- package/types/sync/types.d.ts +0 -43
- package/types/trackers/eventTracker.d.ts +0 -10
- package/types/trackers/filter/bloomFilter.d.ts +0 -10
- package/types/trackers/filter/dictionaryFilter.d.ts +0 -8
- package/types/trackers/filter/types.d.ts +0 -5
- package/types/trackers/impressionObserver/ImpressionObserver.d.ts +0 -8
- package/types/trackers/impressionObserver/buildKey.d.ts +0 -2
- package/types/trackers/impressionObserver/impressionObserverCS.d.ts +0 -4
- package/types/trackers/impressionObserver/impressionObserverSS.d.ts +0 -4
- package/types/trackers/impressionObserver/types.d.ts +0 -4
- package/types/trackers/impressionObserver/utils.d.ts +0 -13
- package/types/trackers/impressionsTracker.d.ts +0 -13
- 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/telemetryTracker.d.ts +0 -3
- package/types/trackers/types.d.ts +0 -65
- package/types/trackers/uniqueKeysTracker.d.ts +0 -13
- package/types/types.d.ts +0 -1262
- package/types/utils/Backoff.d.ts +0 -25
- package/types/utils/LRUCache/LinkedList.d.ts +0 -34
- package/types/utils/LRUCache/index.d.ts +0 -16
- package/types/utils/MinEventEmitter.d.ts +0 -12
- package/types/utils/MinEvents.d.ts +0 -4
- package/types/utils/base64/index.d.ts +0 -30
- package/types/utils/constants/browser.d.ts +0 -3
- package/types/utils/constants/index.d.ts +0 -63
- package/types/utils/decompress/index.d.ts +0 -16
- package/types/utils/env/isLocalStorageAvailable.d.ts +0 -1
- package/types/utils/env/isNode.d.ts +0 -5
- package/types/utils/inputValidation/apiKey.d.ts +0 -7
- package/types/utils/inputValidation/attribute.d.ts +0 -2
- package/types/utils/inputValidation/attributes.d.ts +0 -4
- package/types/utils/inputValidation/event.d.ts +0 -2
- package/types/utils/inputValidation/eventProperties.d.ts +0 -6
- package/types/utils/inputValidation/eventValue.d.ts +0 -2
- package/types/utils/inputValidation/index.d.ts +0 -13
- package/types/utils/inputValidation/isOperational.d.ts +0 -4
- package/types/utils/inputValidation/key.d.ts +0 -3
- package/types/utils/inputValidation/preloadedData.d.ts +0 -3
- package/types/utils/inputValidation/split.d.ts +0 -2
- package/types/utils/inputValidation/splitExistance.d.ts +0 -7
- package/types/utils/inputValidation/splits.d.ts +0 -2
- package/types/utils/inputValidation/trafficType.d.ts +0 -2
- package/types/utils/inputValidation/trafficTypeExistance.d.ts +0 -9
- package/types/utils/jwt/index.d.ts +0 -5
- package/types/utils/jwt/types.d.ts +0 -5
- package/types/utils/key/index.d.ts +0 -8
- package/types/utils/labels/index.d.ts +0 -7
- package/types/utils/lang/binarySearch.d.ts +0 -9
- package/types/utils/lang/getFnName.d.ts +0 -4
- package/types/utils/lang/getGlobal.d.ts +0 -4
- package/types/utils/lang/index.d.ts +0 -105
- package/types/utils/lang/maps.d.ts +0 -55
- package/types/utils/lang/objectAssign.d.ts +0 -3
- package/types/utils/lang/sets.d.ts +0 -60
- package/types/utils/murmur3/common.d.ts +0 -12
- package/types/utils/murmur3/legacy.d.ts +0 -2
- package/types/utils/murmur3/murmur3.d.ts +0 -2
- package/types/utils/murmur3/murmur3_128.d.ts +0 -6
- package/types/utils/murmur3/murmur3_128_x86.d.ts +0 -7
- package/types/utils/murmur3/murmur3_64.d.ts +0 -10
- package/types/utils/murmur3/utfx.d.ts +0 -27
- package/types/utils/promise/thenable.d.ts +0 -1
- package/types/utils/promise/timeout.d.ts +0 -1
- package/types/utils/promise/wrapper.d.ts +0 -21
- package/types/utils/settingsValidation/consent.d.ts +0 -6
- package/types/utils/settingsValidation/impressionsMode.d.ts +0 -3
- package/types/utils/settingsValidation/index.d.ts +0 -52
- package/types/utils/settingsValidation/integrations/common.d.ts +0 -14
- package/types/utils/settingsValidation/integrations/configurable.d.ts +0 -13
- package/types/utils/settingsValidation/integrations/pluggable.d.ts +0 -13
- package/types/utils/settingsValidation/localhost/builtin.d.ts +0 -16
- package/types/utils/settingsValidation/localhost/pluggable.d.ts +0 -16
- package/types/utils/settingsValidation/logger/builtinLogger.d.ts +0 -10
- package/types/utils/settingsValidation/logger/commons.d.ts +0 -9
- package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +0 -11
- package/types/utils/settingsValidation/mode.d.ts +0 -1
- package/types/utils/settingsValidation/runtime.d.ts +0 -2
- package/types/utils/settingsValidation/splitFilters.d.ts +0 -16
- package/types/utils/settingsValidation/storage/storageCS.d.ts +0 -21
- package/types/utils/settingsValidation/types.d.ts +0 -32
- package/types/utils/settingsValidation/url.d.ts +0 -10
- package/types/utils/time/index.d.ts +0 -4
- package/types/utils/timeTracker/index.d.ts +0 -70
- package/types/utils/timeTracker/now/browser.d.ts +0 -1
- package/types/utils/timeTracker/now/node.d.ts +0 -1
- package/types/utils/timeTracker/timer.d.ts +0 -1
package/src/storages/types.ts
CHANGED
|
@@ -1,8 +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 {
|
|
5
|
-
import { ISet } from '../utils/lang/sets';
|
|
3
|
+
import { ImpressionDTO, SDKMode, ILogger, EventData, ISplitFiltersValidation } from '../types';
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Interface of a pluggable storage wrapper.
|
|
@@ -290,7 +288,7 @@ export interface IImpressionsCacheBase {
|
|
|
290
288
|
|
|
291
289
|
export interface IEventsCacheBase {
|
|
292
290
|
// Consumer API method, used by events tracker, in standalone and consumer modes, to push events into the storage.
|
|
293
|
-
track(data:
|
|
291
|
+
track(data: EventData, size?: number): MaybeThenable<boolean>
|
|
294
292
|
}
|
|
295
293
|
|
|
296
294
|
/** Impressions and events cache for standalone mode (sync) */
|
|
@@ -313,8 +311,8 @@ export interface IImpressionsCacheSync extends IImpressionsCacheBase, IRecorderC
|
|
|
313
311
|
setOnFullQueueCb(cb: () => void): void
|
|
314
312
|
}
|
|
315
313
|
|
|
316
|
-
export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<
|
|
317
|
-
track(data:
|
|
314
|
+
export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<EventData[]> {
|
|
315
|
+
track(data: EventData, size?: number): boolean
|
|
318
316
|
/* Registers callback for full queue */
|
|
319
317
|
setOnFullQueueCb(cb: () => void): void
|
|
320
318
|
}
|
|
@@ -340,7 +338,7 @@ export interface IImpressionsCacheAsync extends IImpressionsCacheBase, IRecorder
|
|
|
340
338
|
export interface IEventsCacheAsync extends IEventsCacheBase, IRecorderCacheProducerAsync<StoredEventWithMetadata[]> {
|
|
341
339
|
// Consumer API method, used by events tracker (in standalone and consumer modes) to push data into.
|
|
342
340
|
// The result promise cannot reject.
|
|
343
|
-
track(data:
|
|
341
|
+
track(data: EventData, size?: number): Promise<boolean>
|
|
344
342
|
}
|
|
345
343
|
|
|
346
344
|
/**
|
|
@@ -353,17 +351,9 @@ export interface IImpressionCountsCacheSync extends IRecorderCacheProducerSync<R
|
|
|
353
351
|
|
|
354
352
|
// Used by impressions count submitter in standalone and producer mode
|
|
355
353
|
isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
|
|
356
|
-
pop(toMerge?: Record<string, number>
|
|
354
|
+
pop(toMerge?: Record<string, number>): Record<string, number> // pop cache data
|
|
357
355
|
}
|
|
358
356
|
|
|
359
|
-
export interface IUniqueKeysCacheBase extends IRecorderCacheProducerSync<{ [featureName: string]: ISet<string> }>{
|
|
360
|
-
// Used by unique Keys tracker
|
|
361
|
-
track(featureName: string, timeFrame: number, amount: number): void
|
|
362
|
-
|
|
363
|
-
// Used by unique keys submitter in standalone and producer mode
|
|
364
|
-
isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
|
|
365
|
-
pop(toMerge?: { [featureName: string]: ISet<string> } ): { [featureName: string]: ISet<string> } // pop cache data
|
|
366
|
-
}
|
|
367
357
|
|
|
368
358
|
/**
|
|
369
359
|
* Telemetry storage interface for standalone and partial consumer modes.
|
|
@@ -454,16 +444,14 @@ export interface IStorageBase<
|
|
|
454
444
|
TSegmentsCache extends ISegmentsCacheBase,
|
|
455
445
|
TImpressionsCache extends IImpressionsCacheBase,
|
|
456
446
|
TEventsCache extends IEventsCacheBase,
|
|
457
|
-
TTelemetryCache extends ITelemetryCacheSync | ITelemetryCacheAsync
|
|
458
|
-
TUniqueKeysCache extends IUniqueKeysCacheBase
|
|
447
|
+
TTelemetryCache extends ITelemetryCacheSync | ITelemetryCacheAsync
|
|
459
448
|
> {
|
|
460
449
|
splits: TSplitsCache,
|
|
461
450
|
segments: TSegmentsCache,
|
|
462
451
|
impressions: TImpressionsCache,
|
|
463
452
|
impressionCounts?: IImpressionCountsCacheSync,
|
|
464
453
|
events: TEventsCache,
|
|
465
|
-
telemetry?: TTelemetryCache
|
|
466
|
-
uniqueKeys?: TUniqueKeysCache,
|
|
454
|
+
telemetry?: TTelemetryCache
|
|
467
455
|
destroy(): void | Promise<void>,
|
|
468
456
|
shared?: (matchingKey: string, onReadyCb: (error?: any) => void) => this
|
|
469
457
|
}
|
|
@@ -473,8 +461,7 @@ export interface IStorageSync extends IStorageBase<
|
|
|
473
461
|
ISegmentsCacheSync,
|
|
474
462
|
IImpressionsCacheSync,
|
|
475
463
|
IEventsCacheSync,
|
|
476
|
-
ITelemetryCacheSync
|
|
477
|
-
IUniqueKeysCacheBase
|
|
464
|
+
ITelemetryCacheSync
|
|
478
465
|
> { }
|
|
479
466
|
|
|
480
467
|
export interface IStorageAsync extends IStorageBase<
|
|
@@ -482,8 +469,7 @@ export interface IStorageAsync extends IStorageBase<
|
|
|
482
469
|
ISegmentsCacheAsync,
|
|
483
470
|
IImpressionsCacheAsync | IImpressionsCacheSync,
|
|
484
471
|
IEventsCacheAsync | IEventsCacheSync,
|
|
485
|
-
ITelemetryCacheAsync
|
|
486
|
-
IUniqueKeysCacheBase
|
|
472
|
+
ITelemetryCacheAsync
|
|
487
473
|
> { }
|
|
488
474
|
|
|
489
475
|
/** StorageFactory */
|
|
@@ -508,14 +494,39 @@ export interface IStorageFactoryParams {
|
|
|
508
494
|
metadata: IMetadata,
|
|
509
495
|
}
|
|
510
496
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
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
|
+
},
|
|
521
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
|
|
|
@@ -4,7 +4,6 @@ import { impressionCountsSubmitterFactory } from './impressionCountsSubmitter';
|
|
|
4
4
|
import { telemetrySubmitterFactory } from './telemetrySubmitter';
|
|
5
5
|
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
|
|
6
6
|
import { ISubmitterManager } from './types';
|
|
7
|
-
import { uniqueKeysSubmitterFactory } from './uniqueKeysSubmitter';
|
|
8
7
|
|
|
9
8
|
export function submitterManagerFactory(params: ISdkFactoryContextSync): ISubmitterManager {
|
|
10
9
|
|
|
@@ -16,7 +15,6 @@ export function submitterManagerFactory(params: ISdkFactoryContextSync): ISubmit
|
|
|
16
15
|
const impressionCountsSubmitter = impressionCountsSubmitterFactory(params);
|
|
17
16
|
if (impressionCountsSubmitter) submitters.push(impressionCountsSubmitter);
|
|
18
17
|
const telemetrySubmitter = telemetrySubmitterFactory(params);
|
|
19
|
-
if (params.uniqueKeysTracker) submitters.push(uniqueKeysSubmitterFactory(params));
|
|
20
18
|
|
|
21
19
|
return {
|
|
22
20
|
// `onlyTelemetry` true if SDK is created with userConsent not GRANTED
|
|
@@ -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 = {
|
|
@@ -35,24 +35,6 @@ export type ImpressionCountsPayload = {
|
|
|
35
35
|
}[]
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export type UniqueKeysPayloadSs = {
|
|
39
|
-
keys: {
|
|
40
|
-
/** Split name */
|
|
41
|
-
f: string
|
|
42
|
-
/** keyNames */
|
|
43
|
-
ks: string[]
|
|
44
|
-
}[]
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export type UniqueKeysPayloadCs = {
|
|
48
|
-
keys: {
|
|
49
|
-
/** keyNames */
|
|
50
|
-
k: string
|
|
51
|
-
/** Split name */
|
|
52
|
-
fs: string[]
|
|
53
|
-
}[]
|
|
54
|
-
}
|
|
55
|
-
|
|
56
38
|
export type StoredImpressionWithMetadata = {
|
|
57
39
|
/** Metadata */
|
|
58
40
|
m: IMetadata,
|
|
@@ -79,7 +61,7 @@ export type StoredEventWithMetadata = {
|
|
|
79
61
|
/** Metadata */
|
|
80
62
|
m: IMetadata,
|
|
81
63
|
/** Stored event */
|
|
82
|
-
e:
|
|
64
|
+
e: EventData
|
|
83
65
|
}
|
|
84
66
|
|
|
85
67
|
/**
|
|
@@ -166,8 +148,7 @@ export type OperationMode = STANDALONE_ENUM | CONSUMER_ENUM | CONSUMER_PARTIAL_E
|
|
|
166
148
|
|
|
167
149
|
export type OPTIMIZED_ENUM = 0;
|
|
168
150
|
export type DEBUG_ENUM = 1;
|
|
169
|
-
export type
|
|
170
|
-
export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM | NONE_ENUM;
|
|
151
|
+
export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM;
|
|
171
152
|
|
|
172
153
|
export type RefreshRates = {
|
|
173
154
|
sp: number, // splits
|
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
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
2
|
import { thenable } from '../utils/promise/thenable';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { truncateTimeFrame } from '../utils/time';
|
|
4
|
+
import { IImpressionCountsCacheSync, IImpressionsCacheBase, ITelemetryCacheSync, ITelemetryCacheAsync } from '../storages/types';
|
|
5
|
+
import { IImpressionsHandler, IImpressionsTracker } from './types';
|
|
6
|
+
import { ImpressionDTO, ISettings, Attributes, ImpressionData } from '../types';
|
|
7
|
+
import { IImpressionObserver } from './impressionObserver/types';
|
|
6
8
|
import { IMPRESSIONS_TRACKER_SUCCESS, ERROR_IMPRESSIONS_TRACKER, ERROR_IMPRESSIONS_LISTENER } from '../logger/constants';
|
|
7
9
|
import { CONSENT_DECLINED, DEDUPED, QUEUED } from '../utils/constants';
|
|
8
10
|
|
|
@@ -13,28 +15,48 @@ import { CONSENT_DECLINED, DEDUPED, QUEUED } from '../utils/constants';
|
|
|
13
15
|
* @param metadata runtime metadata (ip, hostname and version)
|
|
14
16
|
* @param impressionListener optional impression listener
|
|
15
17
|
* @param integrationsManager optional integrations manager
|
|
16
|
-
* @param
|
|
18
|
+
* @param observer optional impression observer. If provided, previous time (pt property) is included in impression instances
|
|
19
|
+
* @param countsCache optional cache to save impressions count. If provided, impressions will be deduped (OPTIMIZED mode)
|
|
17
20
|
*/
|
|
18
21
|
export function impressionsTrackerFactory(
|
|
19
22
|
settings: ISettings,
|
|
20
23
|
impressionsCache: IImpressionsCacheBase,
|
|
21
|
-
strategy: IStrategy,
|
|
22
24
|
integrationsManager?: IImpressionsHandler,
|
|
23
|
-
|
|
25
|
+
// if observer is provided, it implies `shouldAddPreviousTime` flag (i.e., if impressions previous time should be added or not)
|
|
26
|
+
observer?: IImpressionObserver,
|
|
27
|
+
// if countsCache is provided, it implies `isOptimized` flag (i.e., if impressions should be deduped or not)
|
|
28
|
+
countsCache?: IImpressionCountsCacheSync,
|
|
29
|
+
telemetryCache?: ITelemetryCacheSync | ITelemetryCacheAsync
|
|
24
30
|
): IImpressionsTracker {
|
|
25
31
|
|
|
26
32
|
const { log, impressionListener, runtime: { ip, hostname }, version } = settings;
|
|
27
33
|
|
|
28
34
|
return {
|
|
29
|
-
track(impressions: ImpressionDTO[], attributes?:
|
|
35
|
+
track(impressions: ImpressionDTO[], attributes?: Attributes) {
|
|
30
36
|
if (settings.userConsent === CONSENT_DECLINED) return;
|
|
31
37
|
|
|
32
38
|
const impressionsCount = impressions.length;
|
|
33
39
|
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
const impressionsToStore: ImpressionDTO[] = []; // Track only the impressions that are going to be stored
|
|
41
|
+
// Wraps impressions to store and adds previousTime if it corresponds
|
|
42
|
+
impressions.forEach((impression) => {
|
|
43
|
+
if (observer) {
|
|
44
|
+
// Adds previous time if it is enabled
|
|
45
|
+
impression.pt = observer.testAndSet(impression);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const now = Date.now();
|
|
49
|
+
if (countsCache) {
|
|
50
|
+
// Increments impression counter per featureName
|
|
51
|
+
countsCache.track(impression.feature, now, 1);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Checks if the impression should be added in queue to be sent
|
|
55
|
+
if (!countsCache || !impression.pt || impression.pt < truncateTimeFrame(now)) {
|
|
56
|
+
impressionsToStore.push(impression);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
38
60
|
const res = impressionsCache.track(impressionsToStore);
|
|
39
61
|
|
|
40
62
|
// If we're on an async storage, handle error and log it.
|
|
@@ -49,16 +71,16 @@ export function impressionsTrackerFactory(
|
|
|
49
71
|
// @TODO we are not dropping impressions on full queue yet, so DROPPED stats are not recorded
|
|
50
72
|
if (telemetryCache) {
|
|
51
73
|
(telemetryCache as ITelemetryCacheSync).recordImpressionStats(QUEUED, impressionsToStore.length);
|
|
52
|
-
(telemetryCache as ITelemetryCacheSync).recordImpressionStats(DEDUPED,
|
|
74
|
+
(telemetryCache as ITelemetryCacheSync).recordImpressionStats(DEDUPED, impressions.length - impressionsToStore.length);
|
|
53
75
|
}
|
|
54
76
|
}
|
|
55
77
|
|
|
56
78
|
// @TODO next block might be handled by the integration manager. In that case, the metadata object doesn't need to be passed in the constructor
|
|
57
79
|
if (impressionListener || integrationsManager) {
|
|
58
|
-
for (let i = 0; i <
|
|
59
|
-
const impressionData:
|
|
80
|
+
for (let i = 0; i < impressionsCount; i++) {
|
|
81
|
+
const impressionData: ImpressionData = {
|
|
60
82
|
// copy of impression, to avoid unexpected behaviour if modified by integrations or impressionListener
|
|
61
|
-
impression: objectAssign({},
|
|
83
|
+
impression: objectAssign({}, impressions[i]),
|
|
62
84
|
attributes,
|
|
63
85
|
ip,
|
|
64
86
|
hostname,
|
package/src/trackers/types.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImpressionDTO, EventData, ImpressionData, Attributes } from '../types';
|
|
2
2
|
import { StreamingEventType, Method, OperationType } from '../sync/submitters/types';
|
|
3
3
|
import { IEventsCacheBase } from '../storages/types';
|
|
4
4
|
import { NetworkError } from '../services/types';
|
|
5
|
-
import { ISet } from '../utils/lang/sets';
|
|
6
5
|
|
|
7
6
|
/** Events tracker */
|
|
8
7
|
|
|
9
8
|
export interface IEventsHandler {
|
|
10
|
-
handleEvent(eventData:
|
|
9
|
+
handleEvent(eventData: EventData): any
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
export type IEventTracker = IEventsCacheBase
|
|
@@ -15,11 +14,11 @@ export type IEventTracker = IEventsCacheBase
|
|
|
15
14
|
/** Impressions tracker */
|
|
16
15
|
|
|
17
16
|
export interface IImpressionsHandler {
|
|
18
|
-
handleImpression(impressionData:
|
|
17
|
+
handleImpression(impressionData: ImpressionData): any
|
|
19
18
|
}
|
|
20
19
|
|
|
21
20
|
export interface IImpressionsTracker {
|
|
22
|
-
track(impressions: ImpressionDTO[], attributes?:
|
|
21
|
+
track(impressions: ImpressionDTO[], attributes?: Attributes): void
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
/** Telemetry tracker */
|
|
@@ -43,32 +42,3 @@ export interface ITelemetryTracker {
|
|
|
43
42
|
*/
|
|
44
43
|
streamingEvent(e: StreamingEventType | AUTH_REJECTION, d?: number): void
|
|
45
44
|
}
|
|
46
|
-
|
|
47
|
-
export interface IFilterAdapter {
|
|
48
|
-
add(featureName: string, key: string): boolean;
|
|
49
|
-
contains(featureName: string, key: string): boolean;
|
|
50
|
-
clear(): void;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface IImpressionSenderAdapter {
|
|
54
|
-
recordUniqueKeys(data: Object): void;
|
|
55
|
-
recordImpressionCounts(data: Object): void
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/** Unique keys tracker */
|
|
59
|
-
export interface IUniqueKeysTracker {
|
|
60
|
-
track(featureName: string, key: string): void;
|
|
61
|
-
pop(toMerge?: { [featureName: string]: ISet<string> }): { [featureName: string]: ISet<string>; };
|
|
62
|
-
clear(): void;
|
|
63
|
-
isEmpty(): boolean;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export interface IStrategyResult {
|
|
67
|
-
impressionsToStore: ImpressionDTO[],
|
|
68
|
-
impressionsToListener: ImpressionDTO[],
|
|
69
|
-
deduped: number
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export interface IStrategy {
|
|
73
|
-
process(impressions: ImpressionDTO[]): IStrategyResult
|
|
74
|
-
}
|