@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/sdkFactory/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { impressionsTrackerFactory } from '../trackers/impressionsTracker';
|
|
|
4
4
|
import { eventTrackerFactory } from '../trackers/eventTracker';
|
|
5
5
|
import { telemetryTrackerFactory } from '../trackers/telemetryTracker';
|
|
6
6
|
import { IStorageFactoryParams } from '../storages/types';
|
|
7
|
-
import {
|
|
7
|
+
import { IBasicSDK } from '../types';
|
|
8
8
|
import { getMatching } from '../utils/key';
|
|
9
9
|
import { shouldBeOptimized } from '../trackers/impressionObserver/utils';
|
|
10
10
|
import { validateAndTrackApiKey } from '../utils/inputValidation/apiKey';
|
|
@@ -13,23 +13,16 @@ import { NEW_FACTORY, RETRIEVE_MANAGER } from '../logger/constants';
|
|
|
13
13
|
import { metadataBuilder } from '../storages/metadataBuilder';
|
|
14
14
|
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED } from '../readiness/constants';
|
|
15
15
|
import { objectAssign } from '../utils/lang/objectAssign';
|
|
16
|
-
import { strategyDebugFactory } from '../trackers/strategy/strategyDebug';
|
|
17
|
-
import { strategyOptimizedFactory } from '../trackers/strategy/strategyOptimized';
|
|
18
|
-
import { strategyNoneFactory } from '../trackers/strategy/strategyNone';
|
|
19
|
-
import { uniqueKeysTrackerFactory } from '../trackers/uniqueKeysTracker';
|
|
20
|
-
import { NONE } from '../utils/constants';
|
|
21
16
|
|
|
22
17
|
/**
|
|
23
18
|
* Modular SDK factory
|
|
24
19
|
*/
|
|
25
|
-
export function sdkFactory(params: ISdkFactoryParams):
|
|
20
|
+
export function sdkFactory(params: ISdkFactoryParams): IBasicSDK<any, any> {
|
|
26
21
|
|
|
27
22
|
const { settings, platform, storageFactory, splitApiFactory, extraProps,
|
|
28
23
|
syncManagerFactory, SignalListener, impressionsObserverFactory,
|
|
29
|
-
integrationsManagerFactory, sdkManagerFactory, sdkClientMethodFactory
|
|
30
|
-
filterAdapterFactory } = params;
|
|
24
|
+
integrationsManagerFactory, sdkManagerFactory, sdkClientMethodFactory } = params;
|
|
31
25
|
const log = settings.log;
|
|
32
|
-
const impressionsMode = settings.sync.impressionsMode;
|
|
33
26
|
|
|
34
27
|
// @TODO handle non-recoverable errors, such as, global `fetch` not available, invalid API Key, etc.
|
|
35
28
|
// On non-recoverable errors, we should mark the SDK as destroyed and not start synchronization.
|
|
@@ -48,6 +41,7 @@ export function sdkFactory(params: ISdkFactoryParams): SplitIO.ICsSDK | SplitIO.
|
|
|
48
41
|
|
|
49
42
|
// ATM, only used by InLocalStorage
|
|
50
43
|
matchingKey: getMatching(settings.core.key),
|
|
44
|
+
// @ts-ignore
|
|
51
45
|
splitFiltersValidation: settings.sync.__splitFiltersValidation,
|
|
52
46
|
|
|
53
47
|
// ATM, only used by PluggableStorage
|
|
@@ -69,19 +63,16 @@ export function sdkFactory(params: ISdkFactoryParams): SplitIO.ICsSDK | SplitIO.
|
|
|
69
63
|
|
|
70
64
|
const integrationsManager = integrationsManagerFactory && integrationsManagerFactory({ settings, storage });
|
|
71
65
|
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
(impressionsMode === NONE) ? strategyNoneFactory(storage.impressionCounts!, uniqueKeysTracker!) : strategyDebugFactory(observer);
|
|
76
|
-
|
|
77
|
-
const impressionsTracker = impressionsTrackerFactory(settings, storage.impressions, strategy, integrationsManager, storage.telemetry);
|
|
66
|
+
// trackers
|
|
67
|
+
const observer = impressionsObserverFactory && impressionsObserverFactory();
|
|
68
|
+
const impressionsTracker = impressionsTrackerFactory(settings, storage.impressions, integrationsManager, observer, storage.impressionCounts, storage.telemetry);
|
|
78
69
|
const eventTracker = eventTrackerFactory(settings, storage.events, integrationsManager, storage.telemetry);
|
|
79
70
|
const telemetryTracker = telemetryTrackerFactory(storage.telemetry, platform.now);
|
|
80
71
|
|
|
81
72
|
// splitApi is used by SyncManager and Browser signal listener
|
|
82
73
|
const splitApi = splitApiFactory && splitApiFactory(settings, platform, telemetryTracker);
|
|
83
74
|
|
|
84
|
-
const ctx: ISdkFactoryContext = { splitApi, eventTracker, impressionsTracker, telemetryTracker,
|
|
75
|
+
const ctx: ISdkFactoryContext = { splitApi, eventTracker, impressionsTracker, telemetryTracker, sdkReadinessManager, readiness, settings, storage, platform };
|
|
85
76
|
|
|
86
77
|
const syncManager = syncManagerFactory && syncManagerFactory(ctx as ISdkFactoryContextSync);
|
|
87
78
|
ctx.syncManager = syncManager;
|
package/src/sdkFactory/types.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { IIntegrationManager, IIntegrationFactoryParams } from '../integrations/types';
|
|
2
2
|
import { ISignalListener } from '../listeners/types';
|
|
3
|
-
import { ILogger } from '../
|
|
3
|
+
import { IAsyncClientSS, IAsyncManager, IClientSS, IClientWithKey, ILogger, IManager, SplitKey } from '../types';
|
|
4
4
|
import { IReadinessManager, ISdkReadinessManager } from '../readiness/types';
|
|
5
5
|
import { IFetch, ISplitApi, IEventSourceConstructor } from '../services/types';
|
|
6
6
|
import { IStorageAsync, IStorageSync, ISplitsCacheSync, ISplitsCacheAsync, IStorageFactoryParams } from '../storages/types';
|
|
7
7
|
import { ISyncManager } from '../sync/types';
|
|
8
8
|
import { IImpressionObserver } from '../trackers/impressionObserver/types';
|
|
9
|
-
import { IImpressionsTracker, IEventTracker, ITelemetryTracker
|
|
10
|
-
import {
|
|
9
|
+
import { IImpressionsTracker, IEventTracker, ITelemetryTracker } from '../trackers/types';
|
|
10
|
+
import { ISettings, IEventEmitter } from '../types';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Environment related dependencies.
|
|
@@ -44,7 +44,6 @@ export interface ISdkFactoryContext {
|
|
|
44
44
|
eventTracker: IEventTracker,
|
|
45
45
|
telemetryTracker: ITelemetryTracker,
|
|
46
46
|
storage: IStorageSync | IStorageAsync,
|
|
47
|
-
uniqueKeysTracker?: IUniqueKeysTracker,
|
|
48
47
|
signalListener?: ISignalListener
|
|
49
48
|
splitApi?: ISplitApi
|
|
50
49
|
syncManager?: ISyncManager,
|
|
@@ -91,16 +90,11 @@ export interface ISdkFactoryParams {
|
|
|
91
90
|
log: ILogger,
|
|
92
91
|
splits: ISplitsCacheSync | ISplitsCacheAsync,
|
|
93
92
|
sdkReadinessManager: ISdkReadinessManager
|
|
94
|
-
) =>
|
|
93
|
+
) => IManager | IAsyncManager,
|
|
95
94
|
|
|
96
95
|
// Sdk client method factory (ISDK::client method).
|
|
97
96
|
// It Allows to distinguish SDK clients with the client-side API (`ICsSDK`) or server-side API (`ISDK` or `IAsyncSDK`).
|
|
98
|
-
sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ ():
|
|
99
|
-
|
|
100
|
-
// Impression observer factory. If provided, will be used for impressions dedupe
|
|
101
|
-
impressionsObserverFactory: () => IImpressionObserver
|
|
102
|
-
|
|
103
|
-
filterAdapterFactory?: () => IFilterAdapter
|
|
97
|
+
sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ (): IClientWithKey; (key: SplitKey, trafficType?: string | undefined): IClientWithKey; } | (() => IClientSS) | (() => IAsyncClientSS))
|
|
104
98
|
|
|
105
99
|
// Optional signal listener constructor. Used to handle special app states, like shutdown, app paused or resumed.
|
|
106
100
|
// Pass only if `syncManager` (used by Node listener) and `splitApi` (used by Browser listener) are passed.
|
|
@@ -113,6 +107,9 @@ export interface ISdkFactoryParams {
|
|
|
113
107
|
// @TODO review impressionListener and integrations interfaces. What about handling impressionListener as an integration ?
|
|
114
108
|
integrationsManagerFactory?: (params: IIntegrationFactoryParams) => IIntegrationManager | undefined,
|
|
115
109
|
|
|
110
|
+
// Impression observer factory. If provided, will be used for impressions dedupe
|
|
111
|
+
impressionsObserverFactory?: () => IImpressionObserver
|
|
112
|
+
|
|
116
113
|
// Optional function to assign additional properties to the factory instance
|
|
117
114
|
extraProps?: (params: ISdkFactoryContext) => object
|
|
118
115
|
}
|
package/src/sdkManager/index.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { validateSplit, validateSplitExistance, validateIfNotDestroyed, validate
|
|
|
5
5
|
import { ISplitsCacheAsync, ISplitsCacheSync } from '../storages/types';
|
|
6
6
|
import { ISdkReadinessManager } from '../readiness/types';
|
|
7
7
|
import { ISplit } from '../dtos/types';
|
|
8
|
-
import {
|
|
9
|
-
import { ILogger } from '../
|
|
8
|
+
import { IAsyncManager, IManager, SplitView } from '../types';
|
|
9
|
+
import { ILogger } from '../types';
|
|
10
10
|
|
|
11
11
|
function collectTreatments(splitObject: ISplit) {
|
|
12
12
|
const conditions = splitObject.conditions;
|
|
@@ -18,7 +18,7 @@ function collectTreatments(splitObject: ISplit) {
|
|
|
18
18
|
return allTreatmentsCondition ? allTreatmentsCondition.partitions.map(v => v.treatment) : [];
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function objectToView(json: string | null):
|
|
21
|
+
function objectToView(json: string | null): SplitView | null {
|
|
22
22
|
let splitObject: ISplit | null;
|
|
23
23
|
|
|
24
24
|
try {
|
|
@@ -41,7 +41,7 @@ function objectToView(json: string | null): SplitIO.SplitView | null {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
function objectsToViews(jsons: string[]) {
|
|
44
|
-
let views:
|
|
44
|
+
let views: SplitView[] = [];
|
|
45
45
|
|
|
46
46
|
jsons.forEach(split => {
|
|
47
47
|
const view = objectToView(split);
|
|
@@ -55,7 +55,7 @@ export function sdkManagerFactory<TSplitCache extends ISplitsCacheSync | ISplits
|
|
|
55
55
|
log: ILogger,
|
|
56
56
|
splits: TSplitCache,
|
|
57
57
|
{ readinessManager, sdkStatus }: ISdkReadinessManager
|
|
58
|
-
): TSplitCache extends ISplitsCacheAsync ?
|
|
58
|
+
): TSplitCache extends ISplitsCacheAsync ? IAsyncManager : IManager {
|
|
59
59
|
const SPLIT_FN_LABEL = 'split';
|
|
60
60
|
|
|
61
61
|
return objectAssign(
|
package/src/services/splitApi.ts
CHANGED
|
@@ -25,6 +25,7 @@ export function splitApiFactory(
|
|
|
25
25
|
): ISplitApi {
|
|
26
26
|
|
|
27
27
|
const urls = settings.urls;
|
|
28
|
+
// @ts-ignore
|
|
28
29
|
const filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
|
|
29
30
|
const SplitSDKImpressionsMode = settings.sync.impressionsMode;
|
|
30
31
|
const splitHttpClient = splitHttpClientFactory(settings, platform.getFetch, platform.getOptions);
|
|
@@ -106,28 +107,6 @@ export function splitApiFactory(
|
|
|
106
107
|
const url = `${urls.events}/testImpressions/count`;
|
|
107
108
|
return splitHttpClient(url, { method: 'POST', body, headers }, telemetryTracker.trackHttp(IMPRESSIONS_COUNT));
|
|
108
109
|
},
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Post unique keys for client side.
|
|
112
|
-
*
|
|
113
|
-
* @param body unique keys payload
|
|
114
|
-
* @param headers Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
115
|
-
*/
|
|
116
|
-
postUniqueKeysBulkCs(body: string, headers?: Record<string, string>) {
|
|
117
|
-
const url = `${urls.telemetry}/api/v1/keys/cs`;
|
|
118
|
-
return splitHttpClient(url, { method: 'POST', body, headers }, telemetryTracker.trackHttp(TELEMETRY));
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Post unique keys for server side.
|
|
123
|
-
*
|
|
124
|
-
* @param body unique keys payload
|
|
125
|
-
* @param headers Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
126
|
-
*/
|
|
127
|
-
postUniqueKeysBulkSs(body: string, headers?: Record<string, string>) {
|
|
128
|
-
const url = `${urls.telemetry}/api/v1/keys/ss`;
|
|
129
|
-
return splitHttpClient(url, { method: 'POST', body, headers }, telemetryTracker.trackHttp(TELEMETRY));
|
|
130
|
-
},
|
|
131
110
|
|
|
132
111
|
postMetricsConfig(body: string) {
|
|
133
112
|
const url = `${urls.telemetry}/v1/metrics/config`;
|
package/src/services/types.ts
CHANGED
|
@@ -43,10 +43,6 @@ export type IFetchMySegments = (userMatchingKey: string, noCache?: boolean) => P
|
|
|
43
43
|
|
|
44
44
|
export type IPostEventsBulk = (body: string, headers?: Record<string, string>) => Promise<IResponse>
|
|
45
45
|
|
|
46
|
-
export type IPostUniqueKeysBulkCs = (body: string, headers?: Record<string, string>) => Promise<IResponse>
|
|
47
|
-
|
|
48
|
-
export type IPostUniqueKeysBulkSs = (body: string, headers?: Record<string, string>) => Promise<IResponse>
|
|
49
|
-
|
|
50
46
|
export type IPostTestImpressionsBulk = (body: string, headers?: Record<string, string>) => Promise<IResponse>
|
|
51
47
|
|
|
52
48
|
export type IPostTestImpressionsCount = (body: string, headers?: Record<string, string>) => Promise<IResponse>
|
|
@@ -63,8 +59,6 @@ export interface ISplitApi {
|
|
|
63
59
|
fetchSegmentChanges: IFetchSegmentChanges
|
|
64
60
|
fetchMySegments: IFetchMySegments
|
|
65
61
|
postEventsBulk: IPostEventsBulk
|
|
66
|
-
postUniqueKeysBulkCs: IPostUniqueKeysBulkCs
|
|
67
|
-
postUniqueKeysBulkSs: IPostUniqueKeysBulkSs
|
|
68
62
|
postTestImpressionsBulk: IPostTestImpressionsBulk
|
|
69
63
|
postTestImpressionsCount: IPostTestImpressionsCount
|
|
70
64
|
postMetricsConfig: IPostMetricsConfig
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PreloadedData } from './types';
|
|
2
2
|
import { DEFAULT_CACHE_EXPIRATION_IN_MILLIS } from '../utils/constants/browser';
|
|
3
3
|
import { DataLoader, ISegmentsCacheSync, ISplitsCacheSync } from './types';
|
|
4
4
|
|
|
@@ -9,7 +9,7 @@ import { DataLoader, ISegmentsCacheSync, ISplitsCacheSync } from './types';
|
|
|
9
9
|
* and extended with a `mySegmentsData` property.
|
|
10
10
|
* @returns function to preload the storage
|
|
11
11
|
*/
|
|
12
|
-
export function dataLoaderFactory(preloadedData:
|
|
12
|
+
export function dataLoaderFactory(preloadedData: PreloadedData): DataLoader {
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Storage-agnostic adaptation of `loadDataIntoLocalStorage` function
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ISplit
|
|
1
|
+
import { ISplit } from '../../dtos/types';
|
|
2
2
|
import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
|
|
3
3
|
import { isFiniteNumber, toNumber, isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
5
|
-
import { ILogger } from '../../
|
|
5
|
+
import { ILogger, ISplitFiltersValidation } from '../../types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
|
|
2
2
|
import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
|
|
3
3
|
import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
|
|
4
|
-
import { IStorageFactoryParams, IStorageSync
|
|
4
|
+
import { IStorageFactoryParams, IStorageSync } from '../types';
|
|
5
|
+
import { StorageSyncFactory } from '../../types';
|
|
5
6
|
import { validatePrefix } from '../KeyBuilder';
|
|
6
7
|
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
7
8
|
import { isLocalStorageAvailable } from '../../utils/env/isLocalStorageAvailable';
|
|
@@ -22,7 +23,7 @@ export interface InLocalStorageOptions {
|
|
|
22
23
|
/**
|
|
23
24
|
* InLocal storage factory for standalone client-side SplitFactory
|
|
24
25
|
*/
|
|
25
|
-
export function InLocalStorage(options: InLocalStorageOptions = {}):
|
|
26
|
+
export function InLocalStorage(options: InLocalStorageOptions = {}): StorageSyncFactory {
|
|
26
27
|
|
|
27
28
|
const prefix = validatePrefix(options.prefix);
|
|
28
29
|
|
|
@@ -1,35 +1,36 @@
|
|
|
1
|
+
import { AttributeType } from '../../types';
|
|
1
2
|
import { objectAssign } from '../../utils/lang/objectAssign';
|
|
2
3
|
|
|
3
4
|
export class AttributesCacheInMemory {
|
|
4
5
|
|
|
5
|
-
private attributesCache: Record<string,
|
|
6
|
+
private attributesCache: Record<string, AttributeType> = {};
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Create or update the value for the given attribute
|
|
10
|
-
*
|
|
11
|
+
*
|
|
11
12
|
* @param {string} attributeName attribute name
|
|
12
13
|
* @param {Object} attributeValue attribute value
|
|
13
|
-
* @returns {boolean} the attribute was stored
|
|
14
|
+
* @returns {boolean} the attribute was stored
|
|
14
15
|
*/
|
|
15
|
-
setAttribute(attributeName: string, attributeValue:
|
|
16
|
+
setAttribute(attributeName: string, attributeValue: AttributeType): boolean {
|
|
16
17
|
this.attributesCache[attributeName] = attributeValue;
|
|
17
18
|
return true;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Retrieves the value of a given attribute
|
|
22
|
-
*
|
|
23
|
+
*
|
|
23
24
|
* @param {string} attributeName attribute name
|
|
24
25
|
* @returns {Object?} stored attribute value
|
|
25
26
|
*/
|
|
26
|
-
getAttribute(attributeName: string):
|
|
27
|
+
getAttribute(attributeName: string): AttributeType {
|
|
27
28
|
return this.attributesCache[attributeName];
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Create or update all the given attributes
|
|
32
|
-
*
|
|
33
|
+
*
|
|
33
34
|
* @param {[string, Object]} attributes attributes to create or update
|
|
34
35
|
* @returns {boolean} attributes were stored
|
|
35
36
|
*/
|
|
@@ -40,16 +41,16 @@ export class AttributesCacheInMemory {
|
|
|
40
41
|
|
|
41
42
|
/**
|
|
42
43
|
* Retrieve the full attributes map
|
|
43
|
-
*
|
|
44
|
-
* @returns {Map<string,
|
|
44
|
+
*
|
|
45
|
+
* @returns {Map<string, AttributeType>} stored attributes
|
|
45
46
|
*/
|
|
46
|
-
getAll(): Record<string,
|
|
47
|
+
getAll(): Record<string, AttributeType> {
|
|
47
48
|
return this.attributesCache;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
/**
|
|
51
52
|
* Removes a given attribute from the map
|
|
52
|
-
*
|
|
53
|
+
*
|
|
53
54
|
* @param {string} attributeName attribute to remove
|
|
54
55
|
* @returns {boolean} attribute removed
|
|
55
56
|
*/
|
|
@@ -63,7 +64,7 @@ export class AttributesCacheInMemory {
|
|
|
63
64
|
|
|
64
65
|
/**
|
|
65
66
|
* Clears all attributes stored in the SDK
|
|
66
|
-
*
|
|
67
|
+
*
|
|
67
68
|
*/
|
|
68
69
|
clear() {
|
|
69
70
|
this.attributesCache = {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventData } from '../../types';
|
|
2
2
|
import { IEventsCacheSync } from '../types';
|
|
3
3
|
|
|
4
4
|
const MAX_QUEUE_BYTE_SIZE = 5 * 1024 * 1024; // 5M
|
|
@@ -7,7 +7,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
|
|
|
7
7
|
|
|
8
8
|
private onFullQueue?: () => void;
|
|
9
9
|
private readonly maxQueue: number;
|
|
10
|
-
private queue:
|
|
10
|
+
private queue: EventData[];
|
|
11
11
|
private queueByteSize: number;
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -28,7 +28,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
|
|
|
28
28
|
/**
|
|
29
29
|
* Add a new event object at the end of the queue.
|
|
30
30
|
*/
|
|
31
|
-
track(data:
|
|
31
|
+
track(data: EventData, size = 0) {
|
|
32
32
|
this.queueByteSize += size;
|
|
33
33
|
this.queue.push(data);
|
|
34
34
|
|
|
@@ -48,7 +48,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
|
|
|
48
48
|
/**
|
|
49
49
|
* Pop the collected data, used as payload for posting.
|
|
50
50
|
*/
|
|
51
|
-
pop(toMerge?:
|
|
51
|
+
pop(toMerge?: EventData[]) {
|
|
52
52
|
const data = this.queue;
|
|
53
53
|
this.clear();
|
|
54
54
|
return toMerge ? toMerge.concat(data) : data;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IEventsCacheAsync } from '../types';
|
|
2
2
|
import { IMetadata } from '../../dtos/types';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
|
-
import {
|
|
5
|
-
import { ILogger } from '../../
|
|
4
|
+
import { EventData } from '../../types';
|
|
5
|
+
import { ILogger } from '../../types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
import { StoredEventWithMetadata } from '../../sync/submitters/types';
|
|
8
8
|
|
|
@@ -24,7 +24,7 @@ export class EventsCacheInRedis implements IEventsCacheAsync {
|
|
|
24
24
|
* Add a new event object into the queue.
|
|
25
25
|
* Unlike `impressions::track`, result promise is never rejected.
|
|
26
26
|
*/
|
|
27
|
-
track(eventData:
|
|
27
|
+
track(eventData: EventData): Promise<boolean> {
|
|
28
28
|
return this.redis.rpush(
|
|
29
29
|
this.key,
|
|
30
30
|
this._toJSON(eventData)
|
|
@@ -40,7 +40,7 @@ export class EventsCacheInRedis implements IEventsCacheAsync {
|
|
|
40
40
|
/**
|
|
41
41
|
* Generates the JSON as we'll store it on Redis.
|
|
42
42
|
*/
|
|
43
|
-
private _toJSON(eventData:
|
|
43
|
+
private _toJSON(eventData: EventData): string {
|
|
44
44
|
return JSON.stringify({
|
|
45
45
|
m: this.metadata,
|
|
46
46
|
e: eventData
|
|
@@ -3,7 +3,7 @@ import { IMetadata } from '../../dtos/types';
|
|
|
3
3
|
import { ImpressionDTO } from '../../types';
|
|
4
4
|
import { Redis } from 'ioredis';
|
|
5
5
|
import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
|
|
6
|
-
import { ILogger } from '../../
|
|
6
|
+
import { ILogger } from '../../types';
|
|
7
7
|
|
|
8
8
|
const IMPRESSIONS_TTL_REFRESH = 3600; // 1 hr
|
|
9
9
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ioredis from 'ioredis';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { merge, isString } from '../../utils/lang';
|
|
4
4
|
import { _Set, setToArray, ISet } from '../../utils/lang/sets';
|
|
5
5
|
import { thenable } from '../../utils/promise/thenable';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Redis } from 'ioredis';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { LOG_PREFIX } from '../inLocalStorage/constants';
|
|
5
5
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
2
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { LOG_PREFIX } from './constants';
|
|
6
6
|
import { ISplit } from '../../dtos/types';
|
|
7
7
|
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RedisAdapter } from './RedisAdapter';
|
|
2
|
-
import { IStorageAsync,
|
|
2
|
+
import { IStorageAsync, IStorageFactoryParams } from '../types';
|
|
3
|
+
import { StorageAsyncFactory } from '../../types';
|
|
3
4
|
import { validatePrefix } from '../KeyBuilder';
|
|
4
5
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
5
6
|
import { SplitsCacheInRedis } from './SplitsCacheInRedis';
|
|
@@ -18,7 +19,7 @@ export interface InRedisStorageOptions {
|
|
|
18
19
|
* InRedis storage factory for consumer server-side SplitFactory, that uses `Ioredis` Redis client for Node.
|
|
19
20
|
* @see {@link https://www.npmjs.com/package/ioredis}
|
|
20
21
|
*/
|
|
21
|
-
export function InRedisStorage(options: InRedisStorageOptions = {}):
|
|
22
|
+
export function InRedisStorage(options: InRedisStorageOptions = {}): StorageAsyncFactory {
|
|
22
23
|
|
|
23
24
|
const prefix = validatePrefix(options.prefix);
|
|
24
25
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IPluggableStorageWrapper, IEventsCacheAsync } from '../types';
|
|
2
2
|
import { IMetadata } from '../../dtos/types';
|
|
3
|
-
import {
|
|
4
|
-
import { ILogger } from '../../
|
|
3
|
+
import { EventData } from '../../types';
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { LOG_PREFIX } from './constants';
|
|
6
6
|
import { StoredEventWithMetadata } from '../../sync/submitters/types';
|
|
7
7
|
|
|
@@ -25,7 +25,7 @@ export class EventsCachePluggable implements IEventsCacheAsync {
|
|
|
25
25
|
* @returns A promise that is resolved with a boolean value indicating if the push operation succeeded or failed.
|
|
26
26
|
* Unlike `impressions::track`, The promise will never be rejected.
|
|
27
27
|
*/
|
|
28
|
-
track(eventData:
|
|
28
|
+
track(eventData: EventData): Promise<boolean> {
|
|
29
29
|
return this.wrapper.pushItems(
|
|
30
30
|
this.key,
|
|
31
31
|
[this._toJSON(eventData)]
|
|
@@ -38,7 +38,7 @@ export class EventsCachePluggable implements IEventsCacheAsync {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
private _toJSON(eventData:
|
|
41
|
+
private _toJSON(eventData: EventData): string {
|
|
42
42
|
return JSON.stringify({
|
|
43
43
|
m: this.metadata,
|
|
44
44
|
e: eventData
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IPluggableStorageWrapper, IImpressionsCacheAsync } from '../types';
|
|
2
2
|
import { IMetadata } from '../../dtos/types';
|
|
3
3
|
import { ImpressionDTO } from '../../types';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
|
|
6
6
|
|
|
7
7
|
export class ImpressionsCachePluggable implements IImpressionsCacheAsync {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
5
5
|
import { IPluggableStorageWrapper, ISegmentsCacheAsync } from '../types';
|
|
6
|
-
import { ILogger } from '../../
|
|
6
|
+
import { ILogger } from '../../types';
|
|
7
7
|
import { LOG_PREFIX } from './constants';
|
|
8
8
|
import { _Set } from '../../utils/lang/sets';
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
2
|
import { KeyBuilder } from '../KeyBuilder';
|
|
3
3
|
import { IPluggableStorageWrapper } from '../types';
|
|
4
|
-
import { ILogger } from '../../
|
|
4
|
+
import { ILogger } from '../../types';
|
|
5
5
|
import { ISplit } from '../../dtos/types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IPluggableStorageWrapper, IStorageAsync,
|
|
2
|
-
|
|
1
|
+
import { IPluggableStorageWrapper, IStorageAsync, IStorageFactoryParams } from '../types';
|
|
2
|
+
import { StorageAsyncFactory } from '../../types';
|
|
3
3
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
4
4
|
import { SplitsCachePluggable } from './SplitsCachePluggable';
|
|
5
5
|
import { SegmentsCachePluggable } from './SegmentsCachePluggable';
|
|
@@ -58,7 +58,7 @@ function promisifyEventsTrack(events: any) {
|
|
|
58
58
|
/**
|
|
59
59
|
* Pluggable storage factory for consumer server-side & client-side SplitFactory.
|
|
60
60
|
*/
|
|
61
|
-
export function PluggableStorage(options: PluggableStorageOptions):
|
|
61
|
+
export function PluggableStorage(options: PluggableStorageOptions): StorageAsyncFactory {
|
|
62
62
|
|
|
63
63
|
validatePluggableStorageOptions(options);
|
|
64
64
|
|