@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
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.uniqueKeysTrackerFactory = void 0;
|
|
4
|
-
var constants_1 = require("../logger/constants");
|
|
5
|
-
var sets_1 = require("../utils/lang/sets");
|
|
6
|
-
var noopFilterAdapter = {
|
|
7
|
-
add: function () { return true; },
|
|
8
|
-
contains: function () { return true; },
|
|
9
|
-
clear: function () { }
|
|
10
|
-
};
|
|
11
|
-
var DEFAULT_CACHE_SIZE = 30000;
|
|
12
|
-
/**
|
|
13
|
-
* Trackes uniques keys
|
|
14
|
-
* Unique Keys Tracker will be in charge of checking if the MTK was already sent to the BE in the last period
|
|
15
|
-
* or schedule to be sent; if not it will be added in an internal cache and sent in the next post.
|
|
16
|
-
*
|
|
17
|
-
* @param log Logger instance
|
|
18
|
-
* @param filterAdapter filter adapter
|
|
19
|
-
* @param cacheSize optional internal cache size
|
|
20
|
-
* @param maxBulkSize optional max MTKs bulk size
|
|
21
|
-
*/
|
|
22
|
-
function uniqueKeysTrackerFactory(log, filterAdapter, cacheSize) {
|
|
23
|
-
if (filterAdapter === void 0) { filterAdapter = noopFilterAdapter; }
|
|
24
|
-
if (cacheSize === void 0) { cacheSize = DEFAULT_CACHE_SIZE; }
|
|
25
|
-
var uniqueKeysTracker = {};
|
|
26
|
-
var uniqueTrackerSize = 0;
|
|
27
|
-
return {
|
|
28
|
-
track: function (featureName, key) {
|
|
29
|
-
if (!filterAdapter.add(featureName, key)) {
|
|
30
|
-
log.debug(constants_1.LOG_PREFIX_UNIQUE_KEYS_TRACKER + "The feature " + featureName + " and key " + key + " exist in the filter");
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (!uniqueKeysTracker[featureName])
|
|
34
|
-
uniqueKeysTracker[featureName] = new sets_1._Set();
|
|
35
|
-
var tracker = uniqueKeysTracker[featureName];
|
|
36
|
-
if (!tracker.has(key)) {
|
|
37
|
-
tracker.add(key);
|
|
38
|
-
log.debug(constants_1.LOG_PREFIX_UNIQUE_KEYS_TRACKER + "Key " + key + " added to feature " + featureName);
|
|
39
|
-
uniqueTrackerSize++;
|
|
40
|
-
}
|
|
41
|
-
if (uniqueTrackerSize >= cacheSize) {
|
|
42
|
-
log.warn(constants_1.LOG_PREFIX_UNIQUE_KEYS_TRACKER + "The UniqueKeysTracker size reached the maximum limit");
|
|
43
|
-
// @TODO trigger event to submitter to send mtk
|
|
44
|
-
uniqueTrackerSize = 0;
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
/**
|
|
48
|
-
* Pop the collected data, used as payload for posting.
|
|
49
|
-
*/
|
|
50
|
-
pop: function () {
|
|
51
|
-
var data = uniqueKeysTracker;
|
|
52
|
-
uniqueKeysTracker = {};
|
|
53
|
-
return data;
|
|
54
|
-
},
|
|
55
|
-
/**
|
|
56
|
-
* Clear the data stored on the cache.
|
|
57
|
-
*/
|
|
58
|
-
clear: function () {
|
|
59
|
-
uniqueKeysTracker = {};
|
|
60
|
-
},
|
|
61
|
-
/**
|
|
62
|
-
* Check if the cache is empty.
|
|
63
|
-
*/
|
|
64
|
-
isEmpty: function () {
|
|
65
|
-
return Object.keys(uniqueKeysTracker).length === 0;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
exports.uniqueKeysTrackerFactory = uniqueKeysTrackerFactory;
|
package/cjs/types.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { setToArray } from '../../utils/lang/sets';
|
|
2
|
-
import { submitterFactory } from './submitter';
|
|
3
|
-
/**
|
|
4
|
-
* Invert keys for feature to features for key
|
|
5
|
-
*/
|
|
6
|
-
function invertUniqueKeys(uniqueKeys) {
|
|
7
|
-
var featureNames = Object.keys(uniqueKeys);
|
|
8
|
-
var inverted = {};
|
|
9
|
-
for (var i = 0; i < featureNames.length; i++) {
|
|
10
|
-
var featureName = featureNames[i];
|
|
11
|
-
var featureKeys = setToArray(uniqueKeys[featureName]);
|
|
12
|
-
for (var j = 0; j < featureKeys.length; j++) {
|
|
13
|
-
var featureKey = featureKeys[j];
|
|
14
|
-
if (!inverted[featureKey])
|
|
15
|
-
inverted[featureKey] = [];
|
|
16
|
-
inverted[featureKey].push(featureName);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return inverted;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Converts `uniqueKeys` data from cache into request payload for CS.
|
|
23
|
-
*/
|
|
24
|
-
export function fromUniqueKeysCollectorCs(uniqueKeys) {
|
|
25
|
-
var payload = [];
|
|
26
|
-
var featuresPerKey = invertUniqueKeys(uniqueKeys);
|
|
27
|
-
var keys = Object.keys(featuresPerKey);
|
|
28
|
-
for (var k = 0; k < keys.length; k++) {
|
|
29
|
-
var key = keys[k];
|
|
30
|
-
var uniqueKeysPayload = {
|
|
31
|
-
k: key,
|
|
32
|
-
fs: featuresPerKey[key]
|
|
33
|
-
};
|
|
34
|
-
payload.push(uniqueKeysPayload);
|
|
35
|
-
}
|
|
36
|
-
return { keys: payload };
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Converts `uniqueKeys` data from cache into request payload for SS.
|
|
40
|
-
*/
|
|
41
|
-
export function fromUniqueKeysCollectorSs(uniqueKeys) {
|
|
42
|
-
var payload = [];
|
|
43
|
-
var featureNames = Object.keys(uniqueKeys);
|
|
44
|
-
for (var i = 0; i < featureNames.length; i++) {
|
|
45
|
-
var featureName = featureNames[i];
|
|
46
|
-
var featureKeys = setToArray(uniqueKeys[featureName]);
|
|
47
|
-
var uniqueKeysPayload = {
|
|
48
|
-
f: featureName,
|
|
49
|
-
ks: featureKeys
|
|
50
|
-
};
|
|
51
|
-
payload.push(uniqueKeysPayload);
|
|
52
|
-
}
|
|
53
|
-
return { keys: payload };
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Submitter that periodically posts impression counts
|
|
57
|
-
*/
|
|
58
|
-
export function uniqueKeysSubmitterFactory(params) {
|
|
59
|
-
var _a = params.settings, log = _a.log, uniqueKeysRefreshRate = _a.scheduler.uniqueKeysRefreshRate, key = _a.core.key, _b = params.splitApi, postUniqueKeysBulkCs = _b.postUniqueKeysBulkCs, postUniqueKeysBulkSs = _b.postUniqueKeysBulkSs, uniqueKeys = params.storage.uniqueKeys;
|
|
60
|
-
var isClientSide = key !== undefined;
|
|
61
|
-
var postUniqueKeysBulk = isClientSide ? postUniqueKeysBulkCs : postUniqueKeysBulkSs;
|
|
62
|
-
var fromUniqueKeysCollector = isClientSide ? fromUniqueKeysCollectorCs : fromUniqueKeysCollectorSs;
|
|
63
|
-
return submitterFactory(log, postUniqueKeysBulk, uniqueKeys, uniqueKeysRefreshRate, 'unique keys', fromUniqueKeysCollector);
|
|
64
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
|
|
3
|
-
*
|
|
4
|
-
* @param impressionsObserver impression observer. Previous time (pt property) is included in impression instances
|
|
5
|
-
* @returns IStrategyResult
|
|
6
|
-
*/
|
|
7
|
-
export function strategyDebugFactory(impressionsObserver) {
|
|
8
|
-
return {
|
|
9
|
-
process: function (impressions) {
|
|
10
|
-
impressions.forEach(function (impression) {
|
|
11
|
-
// Adds previous time if it is enabled
|
|
12
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
13
|
-
});
|
|
14
|
-
return {
|
|
15
|
-
impressionsToStore: impressions,
|
|
16
|
-
impressionsToListener: impressions,
|
|
17
|
-
deduped: 0
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* None strategy for impressions tracker.
|
|
3
|
-
*
|
|
4
|
-
* @param impressionsCounter cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
|
|
5
|
-
* @param uniqueKeysTracker unique keys tracker in charge of tracking the unique keys per split.
|
|
6
|
-
* @returns IStrategyResult
|
|
7
|
-
*/
|
|
8
|
-
export function strategyNoneFactory(impressionsCounter, uniqueKeysTracker) {
|
|
9
|
-
return {
|
|
10
|
-
process: function (impressions) {
|
|
11
|
-
impressions.forEach(function (impression) {
|
|
12
|
-
var now = Date.now();
|
|
13
|
-
// Increments impression counter per featureName
|
|
14
|
-
impressionsCounter.track(impression.feature, now, 1);
|
|
15
|
-
// Keep track by unique key
|
|
16
|
-
uniqueKeysTracker.track(impression.feature, impression.keyName);
|
|
17
|
-
});
|
|
18
|
-
return {
|
|
19
|
-
impressionsToStore: [],
|
|
20
|
-
impressionsToListener: impressions,
|
|
21
|
-
deduped: 0
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { truncateTimeFrame } from '../../utils/time';
|
|
2
|
-
/**
|
|
3
|
-
* Optimized strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
|
|
4
|
-
*
|
|
5
|
-
* @param impressionsObserver impression observer. previous time (pt property) is included in impression instances
|
|
6
|
-
* @param impressionsCounter cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
|
|
7
|
-
* @returns IStrategyResult
|
|
8
|
-
*/
|
|
9
|
-
export function strategyOptimizedFactory(impressionsObserver, impressionsCounter) {
|
|
10
|
-
return {
|
|
11
|
-
process: function (impressions) {
|
|
12
|
-
var impressionsToStore = [];
|
|
13
|
-
impressions.forEach(function (impression) {
|
|
14
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
15
|
-
var now = Date.now();
|
|
16
|
-
// Increments impression counter per featureName
|
|
17
|
-
impressionsCounter.track(impression.feature, now, 1);
|
|
18
|
-
// Checks if the impression should be added in queue to be sent
|
|
19
|
-
if (!impression.pt || impression.pt < truncateTimeFrame(now)) {
|
|
20
|
-
impressionsToStore.push(impression);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return {
|
|
24
|
-
impressionsToStore: impressionsToStore,
|
|
25
|
-
impressionsToListener: impressions,
|
|
26
|
-
deduped: impressions.length - impressionsToStore.length
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { LOG_PREFIX_UNIQUE_KEYS_TRACKER } from '../logger/constants';
|
|
2
|
-
import { _Set } from '../utils/lang/sets';
|
|
3
|
-
var noopFilterAdapter = {
|
|
4
|
-
add: function () { return true; },
|
|
5
|
-
contains: function () { return true; },
|
|
6
|
-
clear: function () { }
|
|
7
|
-
};
|
|
8
|
-
var DEFAULT_CACHE_SIZE = 30000;
|
|
9
|
-
/**
|
|
10
|
-
* Trackes uniques keys
|
|
11
|
-
* Unique Keys Tracker will be in charge of checking if the MTK was already sent to the BE in the last period
|
|
12
|
-
* or schedule to be sent; if not it will be added in an internal cache and sent in the next post.
|
|
13
|
-
*
|
|
14
|
-
* @param log Logger instance
|
|
15
|
-
* @param filterAdapter filter adapter
|
|
16
|
-
* @param cacheSize optional internal cache size
|
|
17
|
-
* @param maxBulkSize optional max MTKs bulk size
|
|
18
|
-
*/
|
|
19
|
-
export function uniqueKeysTrackerFactory(log, filterAdapter, cacheSize) {
|
|
20
|
-
if (filterAdapter === void 0) { filterAdapter = noopFilterAdapter; }
|
|
21
|
-
if (cacheSize === void 0) { cacheSize = DEFAULT_CACHE_SIZE; }
|
|
22
|
-
var uniqueKeysTracker = {};
|
|
23
|
-
var uniqueTrackerSize = 0;
|
|
24
|
-
return {
|
|
25
|
-
track: function (featureName, key) {
|
|
26
|
-
if (!filterAdapter.add(featureName, key)) {
|
|
27
|
-
log.debug(LOG_PREFIX_UNIQUE_KEYS_TRACKER + "The feature " + featureName + " and key " + key + " exist in the filter");
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (!uniqueKeysTracker[featureName])
|
|
31
|
-
uniqueKeysTracker[featureName] = new _Set();
|
|
32
|
-
var tracker = uniqueKeysTracker[featureName];
|
|
33
|
-
if (!tracker.has(key)) {
|
|
34
|
-
tracker.add(key);
|
|
35
|
-
log.debug(LOG_PREFIX_UNIQUE_KEYS_TRACKER + "Key " + key + " added to feature " + featureName);
|
|
36
|
-
uniqueTrackerSize++;
|
|
37
|
-
}
|
|
38
|
-
if (uniqueTrackerSize >= cacheSize) {
|
|
39
|
-
log.warn(LOG_PREFIX_UNIQUE_KEYS_TRACKER + "The UniqueKeysTracker size reached the maximum limit");
|
|
40
|
-
// @TODO trigger event to submitter to send mtk
|
|
41
|
-
uniqueTrackerSize = 0;
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
/**
|
|
45
|
-
* Pop the collected data, used as payload for posting.
|
|
46
|
-
*/
|
|
47
|
-
pop: function () {
|
|
48
|
-
var data = uniqueKeysTracker;
|
|
49
|
-
uniqueKeysTracker = {};
|
|
50
|
-
return data;
|
|
51
|
-
},
|
|
52
|
-
/**
|
|
53
|
-
* Clear the data stored on the cache.
|
|
54
|
-
*/
|
|
55
|
-
clear: function () {
|
|
56
|
-
uniqueKeysTracker = {};
|
|
57
|
-
},
|
|
58
|
-
/**
|
|
59
|
-
* Check if the cache is empty.
|
|
60
|
-
*/
|
|
61
|
-
isEmpty: function () {
|
|
62
|
-
return Object.keys(uniqueKeysTracker).length === 0;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
package/esm/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
|
|
2
|
-
import { ISet, setToArray } from '../../utils/lang/sets';
|
|
3
|
-
import { submitterFactory } from './submitter';
|
|
4
|
-
import { UniqueKeysPayloadCs, UniqueKeysPayloadSs } from './types';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Invert keys for feature to features for key
|
|
8
|
-
*/
|
|
9
|
-
function invertUniqueKeys(uniqueKeys: { [featureName: string]: ISet<string> }): { [key: string]: string[] } {
|
|
10
|
-
const featureNames = Object.keys(uniqueKeys);
|
|
11
|
-
const inverted: { [key: string]: string[] } = {};
|
|
12
|
-
for (let i = 0; i < featureNames.length; i++) {
|
|
13
|
-
const featureName = featureNames[i];
|
|
14
|
-
const featureKeys = setToArray(uniqueKeys[featureName]);
|
|
15
|
-
for (let j = 0; j< featureKeys.length; j++) {
|
|
16
|
-
const featureKey = featureKeys[j];
|
|
17
|
-
if (!inverted[featureKey]) inverted[featureKey] = [];
|
|
18
|
-
inverted[featureKey].push(featureName);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return inverted;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Converts `uniqueKeys` data from cache into request payload for CS.
|
|
26
|
-
*/
|
|
27
|
-
export function fromUniqueKeysCollectorCs(uniqueKeys: { [featureName: string]: ISet<string> }): UniqueKeysPayloadCs {
|
|
28
|
-
const payload = [];
|
|
29
|
-
const featuresPerKey = invertUniqueKeys(uniqueKeys);
|
|
30
|
-
const keys = Object.keys(featuresPerKey);
|
|
31
|
-
for (let k = 0; k < keys.length; k++) {
|
|
32
|
-
const key = keys[k];
|
|
33
|
-
const uniqueKeysPayload = {
|
|
34
|
-
k: key,
|
|
35
|
-
fs: featuresPerKey[key]
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
payload.push(uniqueKeysPayload);
|
|
39
|
-
}
|
|
40
|
-
return { keys: payload };
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Converts `uniqueKeys` data from cache into request payload for SS.
|
|
45
|
-
*/
|
|
46
|
-
export function fromUniqueKeysCollectorSs(uniqueKeys: { [featureName: string]: ISet<string> }): UniqueKeysPayloadSs {
|
|
47
|
-
const payload = [];
|
|
48
|
-
const featureNames = Object.keys(uniqueKeys);
|
|
49
|
-
for (let i = 0; i < featureNames.length; i++) {
|
|
50
|
-
const featureName = featureNames[i];
|
|
51
|
-
const featureKeys = setToArray(uniqueKeys[featureName]);
|
|
52
|
-
const uniqueKeysPayload = {
|
|
53
|
-
f: featureName,
|
|
54
|
-
ks: featureKeys
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
payload.push(uniqueKeysPayload);
|
|
58
|
-
}
|
|
59
|
-
return { keys: payload };
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Submitter that periodically posts impression counts
|
|
64
|
-
*/
|
|
65
|
-
export function uniqueKeysSubmitterFactory(params: ISdkFactoryContextSync) {
|
|
66
|
-
|
|
67
|
-
const {
|
|
68
|
-
settings: { log, scheduler: { uniqueKeysRefreshRate }, core: {key}},
|
|
69
|
-
splitApi: { postUniqueKeysBulkCs, postUniqueKeysBulkSs },
|
|
70
|
-
storage: { uniqueKeys }
|
|
71
|
-
} = params;
|
|
72
|
-
|
|
73
|
-
const isClientSide = key !== undefined;
|
|
74
|
-
const postUniqueKeysBulk = isClientSide ? postUniqueKeysBulkCs : postUniqueKeysBulkSs;
|
|
75
|
-
const fromUniqueKeysCollector = isClientSide ? fromUniqueKeysCollectorCs : fromUniqueKeysCollectorSs;
|
|
76
|
-
|
|
77
|
-
return submitterFactory(log, postUniqueKeysBulk, uniqueKeys!, uniqueKeysRefreshRate, 'unique keys', fromUniqueKeysCollector);
|
|
78
|
-
}
|
|
79
|
-
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ImpressionDTO } from '../../types';
|
|
2
|
-
import { IImpressionObserver } from '../impressionObserver/types';
|
|
3
|
-
import { IStrategy } from '../types';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Debug strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
|
|
7
|
-
*
|
|
8
|
-
* @param impressionsObserver impression observer. Previous time (pt property) is included in impression instances
|
|
9
|
-
* @returns IStrategyResult
|
|
10
|
-
*/
|
|
11
|
-
export function strategyDebugFactory(
|
|
12
|
-
impressionsObserver: IImpressionObserver
|
|
13
|
-
): IStrategy {
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
process(impressions: ImpressionDTO[]) {
|
|
17
|
-
impressions.forEach((impression) => {
|
|
18
|
-
// Adds previous time if it is enabled
|
|
19
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
20
|
-
});
|
|
21
|
-
return {
|
|
22
|
-
impressionsToStore: impressions,
|
|
23
|
-
impressionsToListener: impressions,
|
|
24
|
-
deduped: 0
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { IImpressionCountsCacheSync } from '../../storages/types';
|
|
2
|
-
import { ImpressionDTO } from '../../types';
|
|
3
|
-
import { IStrategy, IUniqueKeysTracker } from '../types';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* None strategy for impressions tracker.
|
|
7
|
-
*
|
|
8
|
-
* @param impressionsCounter cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
|
|
9
|
-
* @param uniqueKeysTracker unique keys tracker in charge of tracking the unique keys per split.
|
|
10
|
-
* @returns IStrategyResult
|
|
11
|
-
*/
|
|
12
|
-
export function strategyNoneFactory(
|
|
13
|
-
impressionsCounter: IImpressionCountsCacheSync,
|
|
14
|
-
uniqueKeysTracker: IUniqueKeysTracker
|
|
15
|
-
): IStrategy {
|
|
16
|
-
|
|
17
|
-
return {
|
|
18
|
-
process(impressions: ImpressionDTO[]) {
|
|
19
|
-
impressions.forEach((impression) => {
|
|
20
|
-
const now = Date.now();
|
|
21
|
-
// Increments impression counter per featureName
|
|
22
|
-
impressionsCounter.track(impression.feature, now, 1);
|
|
23
|
-
// Keep track by unique key
|
|
24
|
-
uniqueKeysTracker.track(impression.feature, impression.keyName);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
impressionsToStore: [],
|
|
29
|
-
impressionsToListener: impressions,
|
|
30
|
-
deduped: 0
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { IImpressionCountsCacheSync } from '../../storages/types';
|
|
2
|
-
import { ImpressionDTO } from '../../types';
|
|
3
|
-
import { truncateTimeFrame } from '../../utils/time';
|
|
4
|
-
import { IImpressionObserver } from '../impressionObserver/types';
|
|
5
|
-
import { IStrategy } from '../types';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Optimized strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
|
|
9
|
-
*
|
|
10
|
-
* @param impressionsObserver impression observer. previous time (pt property) is included in impression instances
|
|
11
|
-
* @param impressionsCounter cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
|
|
12
|
-
* @returns IStrategyResult
|
|
13
|
-
*/
|
|
14
|
-
export function strategyOptimizedFactory(
|
|
15
|
-
impressionsObserver: IImpressionObserver,
|
|
16
|
-
impressionsCounter: IImpressionCountsCacheSync,
|
|
17
|
-
): IStrategy {
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
process(impressions: ImpressionDTO[]) {
|
|
21
|
-
const impressionsToStore: ImpressionDTO[] = [];
|
|
22
|
-
impressions.forEach((impression) => {
|
|
23
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
24
|
-
|
|
25
|
-
const now = Date.now();
|
|
26
|
-
|
|
27
|
-
// Increments impression counter per featureName
|
|
28
|
-
impressionsCounter.track(impression.feature, now, 1);
|
|
29
|
-
|
|
30
|
-
// Checks if the impression should be added in queue to be sent
|
|
31
|
-
if (!impression.pt || impression.pt < truncateTimeFrame(now)) {
|
|
32
|
-
impressionsToStore.push(impression);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return {
|
|
36
|
-
impressionsToStore: impressionsToStore,
|
|
37
|
-
impressionsToListener: impressions,
|
|
38
|
-
deduped: impressions.length - impressionsToStore.length
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { LOG_PREFIX_UNIQUE_KEYS_TRACKER } from '../logger/constants';
|
|
2
|
-
import { ILogger } from '../logger/types';
|
|
3
|
-
import { ISet, _Set } from '../utils/lang/sets';
|
|
4
|
-
import { IFilterAdapter, IUniqueKeysTracker } from './types';
|
|
5
|
-
|
|
6
|
-
const noopFilterAdapter = {
|
|
7
|
-
add() {return true;},
|
|
8
|
-
contains() {return true;},
|
|
9
|
-
clear() {}
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const DEFAULT_CACHE_SIZE = 30000;
|
|
13
|
-
/**
|
|
14
|
-
* Trackes uniques keys
|
|
15
|
-
* Unique Keys Tracker will be in charge of checking if the MTK was already sent to the BE in the last period
|
|
16
|
-
* or schedule to be sent; if not it will be added in an internal cache and sent in the next post.
|
|
17
|
-
*
|
|
18
|
-
* @param log Logger instance
|
|
19
|
-
* @param filterAdapter filter adapter
|
|
20
|
-
* @param cacheSize optional internal cache size
|
|
21
|
-
* @param maxBulkSize optional max MTKs bulk size
|
|
22
|
-
*/
|
|
23
|
-
export function uniqueKeysTrackerFactory(
|
|
24
|
-
log: ILogger,
|
|
25
|
-
filterAdapter: IFilterAdapter = noopFilterAdapter,
|
|
26
|
-
cacheSize = DEFAULT_CACHE_SIZE,
|
|
27
|
-
// @TODO
|
|
28
|
-
// maxBulkSize: number = 5000,
|
|
29
|
-
): IUniqueKeysTracker {
|
|
30
|
-
|
|
31
|
-
let uniqueKeysTracker: { [featureName: string]: ISet<string> } = {};
|
|
32
|
-
let uniqueTrackerSize = 0;
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
track(featureName: string, key: string): void {
|
|
36
|
-
if (!filterAdapter.add(featureName, key)) {
|
|
37
|
-
log.debug(`${LOG_PREFIX_UNIQUE_KEYS_TRACKER}The feature ${featureName} and key ${key} exist in the filter`);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (!uniqueKeysTracker[featureName]) uniqueKeysTracker[featureName] = new _Set();
|
|
41
|
-
const tracker = uniqueKeysTracker[featureName];
|
|
42
|
-
if (!tracker.has(key)) {
|
|
43
|
-
tracker.add(key);
|
|
44
|
-
log.debug(`${LOG_PREFIX_UNIQUE_KEYS_TRACKER}Key ${key} added to feature ${featureName}`);
|
|
45
|
-
uniqueTrackerSize++;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (uniqueTrackerSize >= cacheSize) {
|
|
49
|
-
log.warn(`${LOG_PREFIX_UNIQUE_KEYS_TRACKER}The UniqueKeysTracker size reached the maximum limit`);
|
|
50
|
-
// @TODO trigger event to submitter to send mtk
|
|
51
|
-
uniqueTrackerSize = 0;
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Pop the collected data, used as payload for posting.
|
|
57
|
-
*/
|
|
58
|
-
pop() {
|
|
59
|
-
const data = uniqueKeysTracker;
|
|
60
|
-
uniqueKeysTracker = {};
|
|
61
|
-
return data;
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Clear the data stored on the cache.
|
|
66
|
-
*/
|
|
67
|
-
clear() {
|
|
68
|
-
uniqueKeysTracker = {};
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Check if the cache is empty.
|
|
73
|
-
*/
|
|
74
|
-
isEmpty() {
|
|
75
|
-
return Object.keys(uniqueKeysTracker).length === 0;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
}
|