@splitsoftware/splitio-commons 1.0.1-rc.5 → 1.0.1-rc.6
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/evaluator/Engine.js +6 -5
- package/cjs/evaluator/combiners/and.js +4 -4
- package/cjs/evaluator/combiners/ifelseif.js +4 -3
- package/cjs/evaluator/condition/index.js +4 -3
- package/cjs/evaluator/index.js +7 -7
- package/cjs/evaluator/matchers/all.js +2 -1
- package/cjs/evaluator/matchers/between.js +2 -1
- package/cjs/evaluator/matchers/boolean.js +2 -1
- package/cjs/evaluator/matchers/cont_all.js +3 -2
- package/cjs/evaluator/matchers/cont_any.js +3 -2
- package/cjs/evaluator/matchers/cont_str.js +2 -1
- package/cjs/evaluator/matchers/dependency.js +4 -4
- package/cjs/evaluator/matchers/eq.js +2 -1
- package/cjs/evaluator/matchers/eq_set.js +2 -1
- package/cjs/evaluator/matchers/ew.js +2 -1
- package/cjs/evaluator/matchers/gte.js +2 -1
- package/cjs/evaluator/matchers/index.js +36 -36
- package/cjs/evaluator/matchers/lte.js +2 -1
- package/cjs/evaluator/matchers/part_of.js +3 -2
- package/cjs/evaluator/matchers/segment.js +5 -5
- package/cjs/evaluator/matchers/string.js +2 -1
- package/cjs/evaluator/matchers/sw.js +2 -1
- package/cjs/evaluator/matchers/whitelist.js +2 -1
- package/cjs/evaluator/matchersTransform/index.js +12 -12
- package/cjs/evaluator/matchersTransform/segment.js +3 -2
- package/cjs/evaluator/matchersTransform/set.js +3 -2
- package/cjs/evaluator/matchersTransform/unaryNumeric.js +3 -2
- package/cjs/evaluator/matchersTransform/whitelist.js +3 -2
- package/cjs/evaluator/parser/index.js +16 -16
- package/cjs/evaluator/treatments/index.js +2 -1
- package/cjs/evaluator/value/index.js +5 -5
- package/cjs/evaluator/value/sanitize.js +2 -1
- package/cjs/integrations/browser.js +4 -4
- package/cjs/integrations/ga/GaToSplit.js +3 -4
- package/cjs/integrations/pluggable.js +3 -2
- package/cjs/listeners/browser.js +4 -4
- package/cjs/listeners/node.js +4 -4
- package/cjs/logger/index.js +2 -3
- package/cjs/logger/messages/warn.js +2 -2
- package/cjs/readiness/readinessManager.js +3 -4
- package/cjs/readiness/sdkReadinessManager.js +7 -7
- package/cjs/sdkClient/client.js +5 -5
- package/cjs/sdkClient/clientCS.js +4 -4
- package/cjs/sdkClient/clientInputValidation.js +5 -5
- package/cjs/sdkClient/sdkClient.js +5 -6
- package/cjs/sdkClient/sdkClientMethodCS.js +4 -5
- package/cjs/sdkClient/sdkClientMethodCSWithTT.js +4 -5
- package/cjs/sdkFactory/index.js +7 -8
- package/cjs/sdkManager/index.js +6 -7
- package/cjs/services/splitApi.js +2 -3
- package/cjs/services/splitHttpClient.js +3 -4
- package/cjs/storages/AbstractSegmentsCacheSync.js +2 -1
- package/cjs/storages/AbstractSplitsCacheAsync.js +2 -1
- package/cjs/storages/AbstractSplitsCacheSync.js +2 -2
- package/cjs/storages/KeyBuilder.js +2 -2
- package/cjs/storages/KeyBuilderCS.js +4 -3
- package/cjs/storages/KeyBuilderSS.js +4 -3
- package/cjs/storages/findLatencyIndex.js +2 -1
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +4 -3
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +4 -3
- package/cjs/storages/inLocalStorage/index.js +20 -21
- package/cjs/storages/inMemory/CountsCacheInMemory.js +2 -1
- package/cjs/storages/inMemory/EventsCacheInMemory.js +2 -1
- package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +2 -1
- package/cjs/storages/inMemory/ImpressionsCacheInMemory.js +2 -1
- package/cjs/storages/inMemory/InMemoryStorage.js +10 -11
- package/cjs/storages/inMemory/InMemoryStorageCS.js +12 -13
- package/cjs/storages/inMemory/LatenciesCacheInMemory.js +4 -4
- package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +4 -3
- package/cjs/storages/inMemory/SegmentsCacheInMemory.js +4 -3
- package/cjs/storages/inMemory/SplitsCacheInMemory.js +4 -3
- package/cjs/storages/inRedis/CountsCacheInRedis.js +2 -1
- package/cjs/storages/inRedis/EventsCacheInRedis.js +2 -1
- package/cjs/storages/inRedis/ImpressionsCacheInRedis.js +2 -1
- package/cjs/storages/inRedis/LatenciesCacheInRedis.js +4 -4
- package/cjs/storages/inRedis/RedisAdapter.js +6 -5
- package/cjs/storages/inRedis/SegmentsCacheInRedis.js +2 -1
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +4 -3
- package/cjs/storages/inRedis/index.js +16 -17
- package/cjs/storages/pluggable/SplitsCachePluggable.js +2 -2
- package/cjs/storages/pluggable/index.js +8 -8
- package/cjs/sync/offline/splitsParser/parseCondition.js +2 -1
- package/cjs/sync/offline/splitsParser/splitsParserFromFile.js +3 -3
- package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +2 -3
- package/cjs/sync/offline/syncManagerOffline.js +3 -4
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +4 -5
- package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +2 -1
- package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +2 -1
- package/cjs/sync/polling/fetchers/splitChangesFetcher.js +2 -1
- package/cjs/sync/polling/pollingManagerCS.js +6 -6
- package/cjs/sync/polling/pollingManagerSS.js +8 -8
- package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +5 -5
- package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +5 -5
- package/cjs/sync/polling/syncTasks/splitsSyncTask.js +5 -5
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +2 -3
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +2 -3
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +2 -3
- package/cjs/sync/streaming/AuthClient/index.js +2 -3
- package/cjs/sync/streaming/SSEClient/index.js +2 -1
- package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +2 -1
- package/cjs/sync/streaming/SSEHandler/index.js +4 -4
- package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +4 -4
- package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +4 -4
- package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +4 -4
- package/cjs/sync/streaming/pushManager.js +16 -16
- package/cjs/sync/submitters/submitterSyncTask.js +2 -3
- package/cjs/sync/syncTask.js +2 -1
- package/cjs/trackers/eventTracker.js +7 -7
- package/cjs/trackers/impressionObserver/ImpressionObserver.js +4 -4
- package/cjs/trackers/impressionObserver/impressionObserverCS.js +2 -3
- package/cjs/trackers/impressionObserver/impressionObserverSS.js +2 -3
- package/cjs/trackers/impressionsTracker.js +6 -6
- package/cjs/utils/Backoff.js +2 -1
- package/cjs/utils/LRUCache/index.js +2 -1
- package/cjs/utils/MinEventEmitter.js +2 -1
- package/cjs/utils/inputValidation/trafficTypeExistance.js +2 -3
- package/cjs/utils/lang/binarySearch.js +2 -1
- package/cjs/utils/lang/objectAssign.js +85 -0
- package/cjs/utils/promise/thenable.js +5 -1
- package/cjs/utils/promise/timeout.js +2 -1
- package/cjs/utils/promise/wrapper.js +2 -1
- package/cjs/utils/settingsValidation/impressionsMode.js +2 -1
- package/cjs/utils/settingsValidation/index.js +4 -5
- package/cjs/utils/settingsValidation/mode.js +2 -1
- package/cjs/utils/timeTracker/index.js +7 -8
- package/cjs/utils/timeTracker/now/browser.js +2 -2
- package/cjs/utils/timeTracker/now/node.js +2 -1
- package/cjs/utils/timeTracker/timer.js +3 -2
- package/esm/evaluator/Engine.js +3 -3
- package/esm/evaluator/combiners/and.js +2 -2
- package/esm/evaluator/combiners/ifelseif.js +2 -2
- package/esm/evaluator/condition/index.js +2 -2
- package/esm/evaluator/index.js +2 -2
- package/esm/evaluator/matchers/all.js +1 -1
- package/esm/evaluator/matchers/between.js +1 -1
- package/esm/evaluator/matchers/boolean.js +1 -1
- package/esm/evaluator/matchers/cont_all.js +1 -1
- package/esm/evaluator/matchers/cont_any.js +1 -1
- package/esm/evaluator/matchers/cont_str.js +1 -1
- package/esm/evaluator/matchers/dependency.js +2 -2
- package/esm/evaluator/matchers/eq.js +1 -1
- package/esm/evaluator/matchers/eq_set.js +1 -1
- package/esm/evaluator/matchers/ew.js +1 -1
- package/esm/evaluator/matchers/gte.js +1 -1
- package/esm/evaluator/matchers/index.js +35 -35
- package/esm/evaluator/matchers/lte.js +1 -1
- package/esm/evaluator/matchers/part_of.js +1 -1
- package/esm/evaluator/matchers/segment.js +2 -2
- package/esm/evaluator/matchers/string.js +1 -1
- package/esm/evaluator/matchers/sw.js +1 -1
- package/esm/evaluator/matchers/whitelist.js +1 -1
- package/esm/evaluator/matchersTransform/index.js +5 -5
- package/esm/evaluator/matchersTransform/segment.js +1 -1
- package/esm/evaluator/matchersTransform/set.js +1 -1
- package/esm/evaluator/matchersTransform/unaryNumeric.js +1 -1
- package/esm/evaluator/matchersTransform/whitelist.js +1 -1
- package/esm/evaluator/parser/index.js +11 -11
- package/esm/evaluator/treatments/index.js +1 -1
- package/esm/evaluator/value/index.js +3 -3
- package/esm/evaluator/value/sanitize.js +1 -1
- package/esm/integrations/browser.js +2 -2
- package/esm/integrations/ga/GaToSplit.js +1 -1
- package/esm/integrations/pluggable.js +1 -1
- package/esm/listeners/browser.js +2 -2
- package/esm/listeners/node.js +2 -2
- package/esm/logger/index.js +1 -1
- package/esm/logger/messages/warn.js +2 -2
- package/esm/readiness/readinessManager.js +1 -1
- package/esm/readiness/sdkReadinessManager.js +3 -3
- package/esm/sdkClient/client.js +2 -2
- package/esm/sdkClient/clientCS.js +2 -2
- package/esm/sdkClient/clientInputValidation.js +2 -2
- package/esm/sdkClient/sdkClient.js +3 -3
- package/esm/sdkClient/sdkClientMethodCS.js +2 -2
- package/esm/sdkClient/sdkClientMethodCSWithTT.js +2 -2
- package/esm/sdkFactory/index.js +4 -4
- package/esm/sdkManager/index.js +2 -2
- package/esm/services/splitApi.js +1 -1
- package/esm/services/splitHttpClient.js +1 -1
- package/esm/storages/AbstractSegmentsCacheSync.js +1 -1
- package/esm/storages/AbstractSplitsCacheAsync.js +1 -1
- package/esm/storages/AbstractSplitsCacheSync.js +1 -1
- package/esm/storages/KeyBuilder.js +1 -1
- package/esm/storages/KeyBuilderCS.js +2 -2
- package/esm/storages/KeyBuilderSS.js +2 -2
- package/esm/storages/findLatencyIndex.js +1 -1
- package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +2 -2
- package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +2 -2
- package/esm/storages/inLocalStorage/index.js +8 -8
- package/esm/storages/inMemory/CountsCacheInMemory.js +1 -1
- package/esm/storages/inMemory/EventsCacheInMemory.js +1 -1
- package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +1 -1
- package/esm/storages/inMemory/ImpressionsCacheInMemory.js +1 -1
- package/esm/storages/inMemory/InMemoryStorage.js +5 -5
- package/esm/storages/inMemory/InMemoryStorageCS.js +5 -5
- package/esm/storages/inMemory/LatenciesCacheInMemory.js +2 -2
- package/esm/storages/inMemory/MySegmentsCacheInMemory.js +2 -2
- package/esm/storages/inMemory/SegmentsCacheInMemory.js +2 -2
- package/esm/storages/inMemory/SplitsCacheInMemory.js +2 -2
- package/esm/storages/inRedis/CountsCacheInRedis.js +1 -1
- package/esm/storages/inRedis/EventsCacheInRedis.js +1 -1
- package/esm/storages/inRedis/ImpressionsCacheInRedis.js +1 -1
- package/esm/storages/inRedis/LatenciesCacheInRedis.js +2 -2
- package/esm/storages/inRedis/RedisAdapter.js +3 -3
- package/esm/storages/inRedis/SegmentsCacheInRedis.js +1 -1
- package/esm/storages/inRedis/SplitsCacheInRedis.js +2 -2
- package/esm/storages/inRedis/index.js +8 -8
- package/esm/storages/pluggable/SplitsCachePluggable.js +1 -1
- package/esm/storages/pluggable/index.js +4 -4
- package/esm/sync/offline/splitsParser/parseCondition.js +1 -1
- package/esm/sync/offline/splitsParser/splitsParserFromFile.js +1 -1
- package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +1 -1
- package/esm/sync/offline/syncManagerOffline.js +2 -2
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +2 -2
- package/esm/sync/polling/fetchers/mySegmentsFetcher.js +1 -1
- package/esm/sync/polling/fetchers/segmentChangesFetcher.js +1 -1
- package/esm/sync/polling/fetchers/splitChangesFetcher.js +1 -1
- package/esm/sync/polling/pollingManagerCS.js +3 -3
- package/esm/sync/polling/pollingManagerSS.js +4 -4
- package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +3 -3
- package/esm/sync/polling/syncTasks/segmentsSyncTask.js +3 -3
- package/esm/sync/polling/syncTasks/splitsSyncTask.js +3 -3
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +1 -1
- package/esm/sync/polling/updaters/segmentChangesUpdater.js +1 -1
- package/esm/sync/polling/updaters/splitChangesUpdater.js +1 -1
- package/esm/sync/streaming/AuthClient/index.js +1 -1
- package/esm/sync/streaming/SSEClient/index.js +1 -1
- package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +1 -1
- package/esm/sync/streaming/SSEHandler/index.js +2 -2
- package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +2 -2
- package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +2 -2
- package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +2 -2
- package/esm/sync/streaming/pushManager.js +8 -8
- package/esm/sync/submitters/submitterSyncTask.js +1 -1
- package/esm/sync/syncTask.js +1 -1
- package/esm/trackers/eventTracker.js +3 -3
- package/esm/trackers/impressionObserver/ImpressionObserver.js +2 -2
- package/esm/trackers/impressionObserver/impressionObserverCS.js +1 -1
- package/esm/trackers/impressionObserver/impressionObserverSS.js +1 -1
- package/esm/trackers/impressionsTracker.js +3 -3
- package/esm/utils/Backoff.js +1 -1
- package/esm/utils/LRUCache/index.js +1 -1
- package/esm/utils/MinEventEmitter.js +1 -1
- package/esm/utils/inputValidation/trafficTypeExistance.js +1 -1
- package/esm/utils/lang/binarySearch.js +1 -1
- package/esm/utils/lang/objectAssign.js +82 -0
- package/esm/utils/promise/thenable.js +3 -1
- package/esm/utils/promise/timeout.js +1 -1
- package/esm/utils/promise/wrapper.js +1 -1
- package/esm/utils/settingsValidation/impressionsMode.js +1 -1
- package/esm/utils/settingsValidation/index.js +2 -2
- package/esm/utils/settingsValidation/mode.js +1 -1
- package/esm/utils/timeTracker/index.js +4 -5
- package/esm/utils/timeTracker/now/browser.js +1 -2
- package/esm/utils/timeTracker/now/node.js +1 -1
- package/esm/utils/timeTracker/timer.js +1 -1
- package/package.json +2 -3
- package/src/evaluator/Engine.ts +3 -3
- package/src/evaluator/combiners/and.ts +2 -2
- package/src/evaluator/combiners/ifelseif.ts +2 -2
- package/src/evaluator/condition/index.ts +2 -2
- package/src/evaluator/index.ts +2 -2
- 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 +2 -2
- 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 +35 -35
- package/src/evaluator/matchers/lte.ts +1 -1
- package/src/evaluator/matchers/part_of.ts +1 -1
- package/src/evaluator/matchers/segment.ts +2 -2
- 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/matchersTransform/index.ts +5 -5
- package/src/evaluator/matchersTransform/segment.ts +1 -1
- package/src/evaluator/matchersTransform/set.ts +1 -1
- package/src/evaluator/matchersTransform/unaryNumeric.ts +1 -1
- package/src/evaluator/matchersTransform/whitelist.ts +1 -1
- package/src/evaluator/parser/index.ts +12 -12
- package/src/evaluator/treatments/index.ts +1 -1
- package/src/evaluator/value/index.ts +3 -3
- package/src/evaluator/value/sanitize.ts +1 -1
- package/src/integrations/browser.ts +2 -2
- package/src/integrations/ga/GaToSplit.ts +1 -1
- package/src/integrations/pluggable.ts +1 -1
- package/src/listeners/browser.ts +2 -2
- package/src/listeners/node.ts +2 -2
- package/src/logger/index.ts +1 -1
- package/src/logger/messages/warn.ts +2 -2
- package/src/readiness/readinessManager.ts +2 -2
- package/src/readiness/sdkReadinessManager.ts +3 -3
- package/src/sdkClient/client.ts +2 -2
- package/src/sdkClient/clientCS.ts +2 -2
- package/src/sdkClient/clientInputValidation.ts +2 -2
- package/src/sdkClient/sdkClient.ts +3 -3
- package/src/sdkClient/sdkClientMethodCS.ts +2 -2
- package/src/sdkClient/sdkClientMethodCSWithTT.ts +2 -2
- package/src/sdkFactory/index.ts +4 -4
- package/src/sdkManager/index.ts +2 -2
- package/src/services/splitApi.ts +1 -1
- package/src/services/splitHttpClient.ts +1 -1
- package/src/storages/AbstractSegmentsCacheSync.ts +1 -1
- package/src/storages/AbstractSplitsCacheAsync.ts +1 -1
- package/src/storages/AbstractSplitsCacheSync.ts +1 -1
- package/src/storages/KeyBuilder.ts +1 -1
- package/src/storages/KeyBuilderCS.ts +2 -2
- package/src/storages/KeyBuilderSS.ts +2 -2
- package/src/storages/findLatencyIndex.ts +1 -1
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +3 -3
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +3 -3
- package/src/storages/inLocalStorage/index.ts +8 -8
- package/src/storages/inMemory/CountsCacheInMemory.ts +1 -1
- package/src/storages/inMemory/EventsCacheInMemory.ts +1 -1
- package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +1 -1
- package/src/storages/inMemory/ImpressionsCacheInMemory.ts +1 -1
- package/src/storages/inMemory/InMemoryStorage.ts +5 -5
- package/src/storages/inMemory/InMemoryStorageCS.ts +5 -5
- package/src/storages/inMemory/LatenciesCacheInMemory.ts +2 -2
- package/src/storages/inMemory/MySegmentsCacheInMemory.ts +2 -2
- package/src/storages/inMemory/SegmentsCacheInMemory.ts +2 -2
- package/src/storages/inMemory/SplitsCacheInMemory.ts +2 -2
- package/src/storages/inRedis/CountsCacheInRedis.ts +2 -2
- package/src/storages/inRedis/EventsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/LatenciesCacheInRedis.ts +3 -3
- package/src/storages/inRedis/RedisAdapter.ts +3 -3
- package/src/storages/inRedis/SegmentsCacheInRedis.ts +2 -2
- package/src/storages/inRedis/SplitsCacheInRedis.ts +3 -3
- package/src/storages/inRedis/index.ts +8 -8
- package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
- package/src/storages/pluggable/SplitsCachePluggable.ts +2 -2
- package/src/storages/pluggable/index.ts +4 -4
- package/src/storages/types.ts +2 -2
- package/src/sync/offline/splitsParser/parseCondition.ts +1 -1
- package/src/sync/offline/splitsParser/splitsParserFromFile.ts +1 -1
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +1 -1
- package/src/sync/offline/syncManagerOffline.ts +2 -2
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +2 -2
- package/src/sync/polling/fetchers/mySegmentsFetcher.ts +1 -1
- package/src/sync/polling/fetchers/segmentChangesFetcher.ts +1 -1
- package/src/sync/polling/fetchers/splitChangesFetcher.ts +1 -1
- package/src/sync/polling/pollingManagerCS.ts +3 -3
- package/src/sync/polling/pollingManagerSS.ts +4 -4
- package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +3 -3
- package/src/sync/polling/syncTasks/segmentsSyncTask.ts +3 -3
- package/src/sync/polling/syncTasks/splitsSyncTask.ts +3 -3
- 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/AuthClient/index.ts +1 -1
- package/src/sync/streaming/SSEClient/index.ts +1 -1
- package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +1 -1
- package/src/sync/streaming/SSEHandler/index.ts +2 -2
- package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +2 -2
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +2 -2
- package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +2 -2
- package/src/sync/streaming/UpdateWorkers/types.ts +1 -1
- package/src/sync/streaming/pushManager.ts +8 -8
- package/src/sync/submitters/submitterSyncTask.ts +1 -1
- package/src/sync/syncTask.ts +1 -1
- package/src/trackers/eventTracker.ts +3 -3
- package/src/trackers/impressionObserver/ImpressionObserver.ts +2 -2
- package/src/trackers/impressionObserver/impressionObserverCS.ts +1 -1
- package/src/trackers/impressionObserver/impressionObserverSS.ts +1 -1
- package/src/trackers/impressionsTracker.ts +3 -3
- package/src/utils/Backoff.ts +1 -1
- package/src/utils/LRUCache/index.ts +1 -1
- package/src/utils/MinEventEmitter.ts +1 -1
- package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
- package/src/utils/lang/binarySearch.ts +1 -1
- package/src/utils/lang/objectAssign.ts +104 -0
- package/src/utils/promise/thenable.ts +3 -1
- package/src/utils/promise/timeout.ts +1 -1
- package/src/utils/promise/wrapper.ts +1 -1
- package/src/utils/settingsValidation/impressionsMode.ts +1 -1
- package/src/utils/settingsValidation/index.ts +2 -2
- package/src/utils/settingsValidation/mode.ts +1 -1
- package/src/utils/timeTracker/index.ts +4 -6
- package/src/utils/timeTracker/now/browser.ts +1 -3
- package/src/utils/timeTracker/now/node.ts +1 -1
- package/src/utils/timeTracker/timer.ts +1 -1
- package/types/evaluator/Engine.d.ts +1 -1
- package/types/evaluator/combiners/and.d.ts +1 -1
- package/types/evaluator/combiners/ifelseif.d.ts +1 -1
- package/types/evaluator/condition/index.d.ts +1 -1
- package/types/evaluator/matchers/all.d.ts +1 -1
- package/types/evaluator/matchers/between.d.ts +1 -1
- package/types/evaluator/matchers/boolean.d.ts +1 -1
- package/types/evaluator/matchers/cont_all.d.ts +1 -1
- package/types/evaluator/matchers/cont_any.d.ts +1 -1
- package/types/evaluator/matchers/cont_str.d.ts +1 -1
- package/types/evaluator/matchers/dependency.d.ts +1 -1
- package/types/evaluator/matchers/eq.d.ts +1 -1
- package/types/evaluator/matchers/eq_set.d.ts +1 -1
- package/types/evaluator/matchers/ew.d.ts +1 -1
- package/types/evaluator/matchers/gte.d.ts +1 -1
- package/types/evaluator/matchers/index.d.ts +1 -1
- package/types/evaluator/matchers/lte.d.ts +1 -1
- package/types/evaluator/matchers/part_of.d.ts +1 -1
- package/types/evaluator/matchers/segment.d.ts +1 -1
- package/types/evaluator/matchers/string.d.ts +1 -1
- package/types/evaluator/matchers/sw.d.ts +1 -1
- package/types/evaluator/matchers/whitelist.d.ts +1 -1
- package/types/evaluator/matchersTransform/index.d.ts +1 -1
- package/types/evaluator/matchersTransform/segment.d.ts +1 -1
- package/types/evaluator/matchersTransform/set.d.ts +1 -1
- package/types/evaluator/matchersTransform/unaryNumeric.d.ts +1 -1
- package/types/evaluator/matchersTransform/whitelist.d.ts +1 -1
- package/types/evaluator/parser/index.d.ts +1 -1
- package/types/evaluator/treatments/index.d.ts +1 -1
- package/types/evaluator/value/index.d.ts +1 -1
- package/types/evaluator/value/sanitize.d.ts +1 -1
- package/types/integrations/browser.d.ts +1 -1
- package/types/integrations/pluggable.d.ts +1 -1
- package/types/listeners/browser.d.ts +1 -1
- package/types/listeners/node.d.ts +1 -1
- package/types/readiness/sdkReadinessManager.d.ts +1 -1
- package/types/sdkClient/client.d.ts +1 -1
- package/types/sdkClient/clientCS.d.ts +1 -1
- package/types/sdkClient/clientInputValidation.d.ts +1 -1
- package/types/storages/AbstractSegmentsCacheSync.d.ts +1 -1
- package/types/storages/AbstractSplitsCacheAsync.d.ts +1 -1
- package/types/storages/AbstractSplitsCacheSync.d.ts +1 -1
- package/types/storages/KeyBuilder.d.ts +1 -1
- package/types/storages/KeyBuilderCS.d.ts +2 -2
- package/types/storages/KeyBuilderSS.d.ts +2 -2
- package/types/storages/findLatencyIndex.d.ts +1 -1
- package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +3 -3
- package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +3 -3
- package/types/storages/inMemory/CountsCacheInMemory.d.ts +1 -1
- package/types/storages/inMemory/EventsCacheInMemory.d.ts +1 -1
- package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +1 -1
- package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +1 -1
- package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +1 -1
- package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +2 -2
- package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +2 -2
- package/types/storages/inMemory/SplitsCacheInMemory.d.ts +2 -2
- package/types/storages/inRedis/CountsCacheInRedis.d.ts +2 -2
- package/types/storages/inRedis/EventsCacheInRedis.d.ts +1 -1
- package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +1 -1
- package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +2 -2
- package/types/storages/inRedis/RedisAdapter.d.ts +1 -1
- package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +2 -2
- package/types/storages/inRedis/SplitsCacheInRedis.d.ts +3 -3
- package/types/storages/pluggable/SegmentsCachePluggable.d.ts +1 -1
- package/types/storages/pluggable/SplitsCachePluggable.d.ts +2 -2
- package/types/storages/types.d.ts +2 -2
- package/types/sync/offline/splitsParser/parseCondition.d.ts +1 -1
- package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +1 -1
- package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +1 -1
- package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +1 -1
- package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +1 -1
- package/types/sync/polling/pollingManagerCS.d.ts +1 -1
- package/types/sync/polling/pollingManagerSS.d.ts +1 -1
- package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +1 -1
- package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +1 -1
- package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +1 -1
- package/types/sync/streaming/SSEClient/index.d.ts +1 -1
- package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +1 -1
- package/types/sync/streaming/SSEHandler/index.d.ts +1 -1
- package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +2 -2
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +2 -2
- package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +2 -2
- package/types/sync/streaming/UpdateWorkers/types.d.ts +1 -1
- package/types/sync/streaming/pushManager.d.ts +1 -1
- package/types/sync/syncTask.d.ts +1 -1
- package/types/trackers/eventTracker.d.ts +1 -1
- package/types/trackers/impressionObserver/ImpressionObserver.d.ts +1 -1
- package/types/trackers/impressionObserver/impressionObserverCS.d.ts +1 -1
- package/types/trackers/impressionObserver/impressionObserverSS.d.ts +1 -1
- package/types/trackers/impressionsTracker.d.ts +1 -1
- package/types/utils/Backoff.d.ts +1 -1
- package/types/utils/LRUCache/index.d.ts +1 -1
- package/types/utils/MinEventEmitter.d.ts +1 -1
- package/types/utils/lang/binarySearch.d.ts +1 -1
- package/types/utils/lang/objectAssign.d.ts +3 -0
- package/types/utils/promise/thenable.d.ts +1 -2
- package/types/utils/promise/timeout.d.ts +1 -1
- package/types/utils/promise/wrapper.d.ts +1 -1
- package/types/utils/settingsValidation/impressionsMode.d.ts +1 -1
- package/types/utils/settingsValidation/mode.d.ts +1 -1
- package/types/utils/timeTracker/index.d.ts +2 -2
- package/types/utils/timeTracker/now/browser.d.ts +1 -2
- package/types/utils/timeTracker/now/node.d.ts +1 -1
- package/types/utils/timeTracker/timer.d.ts +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { startsWith } from '../utils/lang';
|
|
2
|
-
import KeyBuilder from './KeyBuilder';
|
|
2
|
+
import { KeyBuilder } from './KeyBuilder';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export class KeyBuilderCS extends KeyBuilder {
|
|
5
5
|
|
|
6
6
|
protected readonly regexSplitsCacheKey: RegExp;
|
|
7
7
|
protected readonly matchingKey: string;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import KeyBuilder from './KeyBuilder';
|
|
1
|
+
import { KeyBuilder } from './KeyBuilder';
|
|
2
2
|
import { IMetadata } from '../dtos/types';
|
|
3
3
|
|
|
4
4
|
// NOT USED
|
|
5
5
|
// const everythingAfterCount = /count\.([^/]+)$/;
|
|
6
6
|
// const latencyMetricNameAndBucket = /latency\.([^/]+)\.bucket\.([0-9]+)$/;
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export class KeyBuilderSS extends KeyBuilder {
|
|
9
9
|
|
|
10
10
|
protected readonly metadata: IMetadata;
|
|
11
11
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isNaNNumber } from '../utils/lang';
|
|
2
2
|
|
|
3
3
|
// @TODO add unit tests
|
|
4
|
-
export
|
|
4
|
+
export function findLatencyIndex(latency: number, min = 0, max = 23, base = 1.5): number {
|
|
5
5
|
const index = Math.min(max, Math.max(min, Math.floor(Math.log(latency) / Math.log(base))));
|
|
6
6
|
return isNaNNumber(index) ? 0 : index; // index is NaN if latency is not a positive number
|
|
7
7
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ILogger } from '../../logger/types';
|
|
2
|
-
import AbstractSegmentsCacheSync from '../AbstractSegmentsCacheSync';
|
|
3
|
-
import KeyBuilderCS from '../KeyBuilderCS';
|
|
2
|
+
import { AbstractSegmentsCacheSync } from '../AbstractSegmentsCacheSync';
|
|
3
|
+
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
4
4
|
import { LOG_PREFIX, DEFINED } from './constants';
|
|
5
5
|
|
|
6
|
-
export
|
|
6
|
+
export class MySegmentsCacheInLocal extends AbstractSegmentsCacheSync {
|
|
7
7
|
|
|
8
8
|
private readonly keys: KeyBuilderCS;
|
|
9
9
|
private readonly log: ILogger;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { ISplit, ISplitFiltersValidation } from '../../dtos/types';
|
|
2
|
-
import AbstractSplitsCacheSync,
|
|
2
|
+
import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
|
|
3
3
|
import { isFiniteNumber, toNumber, isNaNNumber } from '../../utils/lang';
|
|
4
|
-
import KeyBuilderCS from '../KeyBuilderCS';
|
|
4
|
+
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
5
5
|
import { ILogger } from '../../logger/types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* ISplitsCacheSync implementation that stores split definitions in browser LocalStorage.
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export class SplitsCacheInLocal extends AbstractSplitsCacheSync {
|
|
12
12
|
|
|
13
13
|
private readonly keys: KeyBuilderCS;
|
|
14
14
|
private readonly splitFiltersValidation: ISplitFiltersValidation;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import ImpressionsCacheInMemory from '../inMemory/ImpressionsCacheInMemory';
|
|
2
|
-
import ImpressionCountsCacheInMemory from '../inMemory/ImpressionCountsCacheInMemory';
|
|
3
|
-
import EventsCacheInMemory from '../inMemory/EventsCacheInMemory';
|
|
1
|
+
import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
|
|
2
|
+
import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
|
|
3
|
+
import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
|
|
4
4
|
import { IStorageFactoryParams, IStorageSync, IStorageSyncFactory } from '../types';
|
|
5
5
|
import { validatePrefix } from '../KeyBuilder';
|
|
6
|
-
import KeyBuilderCS from '../KeyBuilderCS';
|
|
6
|
+
import { KeyBuilderCS } from '../KeyBuilderCS';
|
|
7
7
|
import { isLocalStorageAvailable } from '../../utils/env/isLocalStorageAvailable';
|
|
8
|
-
import SplitsCacheInLocal from './SplitsCacheInLocal';
|
|
9
|
-
import MySegmentsCacheInLocal from './MySegmentsCacheInLocal';
|
|
10
|
-
import MySegmentsCacheInMemory from '../inMemory/MySegmentsCacheInMemory';
|
|
11
|
-
import SplitsCacheInMemory from '../inMemory/SplitsCacheInMemory';
|
|
8
|
+
import { SplitsCacheInLocal } from './SplitsCacheInLocal';
|
|
9
|
+
import { MySegmentsCacheInLocal } from './MySegmentsCacheInLocal';
|
|
10
|
+
import { MySegmentsCacheInMemory } from '../inMemory/MySegmentsCacheInMemory';
|
|
11
|
+
import { SplitsCacheInMemory } from '../inMemory/SplitsCacheInMemory';
|
|
12
12
|
import { DEFAULT_CACHE_EXPIRATION_IN_MILLIS } from '../../utils/constants/browser';
|
|
13
13
|
import { InMemoryStorageCSFactory } from '../inMemory/InMemoryStorageCS';
|
|
14
14
|
import { LOG_PREFIX } from './constants';
|
|
@@ -3,7 +3,7 @@ import { IEventsCacheSync } from '../types';
|
|
|
3
3
|
|
|
4
4
|
const MAX_QUEUE_BYTE_SIZE = 5 * 1024 * 1024; // 5M
|
|
5
5
|
|
|
6
|
-
export
|
|
6
|
+
export class EventsCacheInMemory implements IEventsCacheSync {
|
|
7
7
|
|
|
8
8
|
private onFullQueue?: () => void;
|
|
9
9
|
private readonly maxQueue: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { truncateTimeFrame } from '../../utils/time';
|
|
2
2
|
import { IImpressionCountsCacheSync } from '../types';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export class ImpressionCountsCacheInMemory implements IImpressionCountsCacheSync {
|
|
5
5
|
private cache: Record<string, number> = {};
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IImpressionsCacheSync } from '../types';
|
|
2
2
|
import { ImpressionDTO } from '../../types';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export class ImpressionsCacheInMemory implements IImpressionsCacheSync {
|
|
5
5
|
|
|
6
6
|
private queue: ImpressionDTO[] = [];
|
|
7
7
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import SplitsCacheInMemory from './SplitsCacheInMemory';
|
|
2
|
-
import SegmentsCacheInMemory from './SegmentsCacheInMemory';
|
|
3
|
-
import ImpressionsCacheInMemory from './ImpressionsCacheInMemory';
|
|
4
|
-
import EventsCacheInMemory from './EventsCacheInMemory';
|
|
1
|
+
import { SplitsCacheInMemory } from './SplitsCacheInMemory';
|
|
2
|
+
import { SegmentsCacheInMemory } from './SegmentsCacheInMemory';
|
|
3
|
+
import { ImpressionsCacheInMemory } from './ImpressionsCacheInMemory';
|
|
4
|
+
import { EventsCacheInMemory } from './EventsCacheInMemory';
|
|
5
5
|
import { IStorageFactoryParams, IStorageSync } from '../types';
|
|
6
|
-
import ImpressionCountsCacheInMemory from './ImpressionCountsCacheInMemory';
|
|
6
|
+
import { ImpressionCountsCacheInMemory } from './ImpressionCountsCacheInMemory';
|
|
7
7
|
import { STORAGE_MEMORY } from '../../utils/constants';
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import SplitsCacheInMemory from './SplitsCacheInMemory';
|
|
2
|
-
import MySegmentsCacheInMemory from './MySegmentsCacheInMemory';
|
|
3
|
-
import ImpressionsCacheInMemory from './ImpressionsCacheInMemory';
|
|
4
|
-
import EventsCacheInMemory from './EventsCacheInMemory';
|
|
1
|
+
import { SplitsCacheInMemory } from './SplitsCacheInMemory';
|
|
2
|
+
import { MySegmentsCacheInMemory } from './MySegmentsCacheInMemory';
|
|
3
|
+
import { ImpressionsCacheInMemory } from './ImpressionsCacheInMemory';
|
|
4
|
+
import { EventsCacheInMemory } from './EventsCacheInMemory';
|
|
5
5
|
import { IStorageSync, IStorageFactoryParams } from '../types';
|
|
6
|
-
import ImpressionCountsCacheInMemory from './ImpressionCountsCacheInMemory';
|
|
6
|
+
import { ImpressionCountsCacheInMemory } from './ImpressionCountsCacheInMemory';
|
|
7
7
|
import { STORAGE_MEMORY } from '../../utils/constants';
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ILatenciesCacheSync } from '../types';
|
|
2
|
-
import findLatencyIndex from '../findLatencyIndex';
|
|
2
|
+
import { findLatencyIndex } from '../findLatencyIndex';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export class LatenciesCacheInMemory implements ILatenciesCacheSync {
|
|
5
5
|
|
|
6
6
|
private counters: Record<string, number[]> = {};
|
|
7
7
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import AbstractSegmentsCacheSync from '../AbstractSegmentsCacheSync';
|
|
1
|
+
import { AbstractSegmentsCacheSync } from '../AbstractSegmentsCacheSync';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Default MySegmentsCacheInMemory implementation that stores MySegments in memory.
|
|
5
5
|
* Supported by all JS runtimes.
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export class MySegmentsCacheInMemory extends AbstractSegmentsCacheSync {
|
|
8
8
|
|
|
9
9
|
private segmentCache: Record<string, boolean> = {};
|
|
10
10
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import AbstractSegmentsCacheSync from '../AbstractSegmentsCacheSync';
|
|
1
|
+
import { AbstractSegmentsCacheSync } from '../AbstractSegmentsCacheSync';
|
|
2
2
|
import { ISet, _Set } from '../../utils/lang/sets';
|
|
3
3
|
import { isIntegerNumber } from '../../utils/lang';
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ import { isIntegerNumber } from '../../utils/lang';
|
|
|
6
6
|
* Default ISplitsCacheSync implementation that stores split definitions in memory.
|
|
7
7
|
* Supported by all JS runtimes.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export class SegmentsCacheInMemory extends AbstractSegmentsCacheSync {
|
|
10
10
|
|
|
11
11
|
private segmentCache: Record<string, ISet<string>> = {};
|
|
12
12
|
private segmentChangeNumber: Record<string, number> = {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ISplit } from '../../dtos/types';
|
|
2
|
-
import AbstractSplitsCacheSync,
|
|
2
|
+
import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
|
|
3
3
|
import { isFiniteNumber } from '../../utils/lang';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Default ISplitsCacheSync implementation that stores split definitions in memory.
|
|
7
7
|
* Supported by all JS runtimes.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export class SplitsCacheInMemory extends AbstractSplitsCacheSync {
|
|
10
10
|
|
|
11
11
|
private splitsCache: Record<string, string> = {};
|
|
12
12
|
private ttCache: Record<string, number> = {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ICountsCacheAsync } from '../types';
|
|
2
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
2
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
4
|
|
|
5
|
-
export
|
|
5
|
+
export class CountsCacheInRedis implements ICountsCacheAsync {
|
|
6
6
|
|
|
7
7
|
private readonly redis: Redis;
|
|
8
8
|
private readonly keys: KeyBuilderSS;
|
|
@@ -6,7 +6,7 @@ import { ILogger } from '../../logger/types';
|
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
import { StoredEventWithMetadata } from '../../sync/submitters/types';
|
|
8
8
|
|
|
9
|
-
export
|
|
9
|
+
export class EventsCacheInRedis implements IEventsCacheAsync {
|
|
10
10
|
|
|
11
11
|
private readonly log: ILogger;
|
|
12
12
|
private readonly key: string;
|
|
@@ -7,7 +7,7 @@ import { ILogger } from '../../logger/types';
|
|
|
7
7
|
|
|
8
8
|
const IMPRESSIONS_TTL_REFRESH = 3600; // 1 hr
|
|
9
9
|
|
|
10
|
-
export
|
|
10
|
+
export class ImpressionsCacheInRedis implements IImpressionsCacheAsync {
|
|
11
11
|
|
|
12
12
|
private readonly log: ILogger;
|
|
13
13
|
private readonly key: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ILatenciesCacheAsync } from '../types';
|
|
2
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
3
|
-
import findLatencyIndex from '../findLatencyIndex';
|
|
2
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
|
+
import { findLatencyIndex } from '../findLatencyIndex';
|
|
4
4
|
import { Redis } from 'ioredis';
|
|
5
5
|
|
|
6
|
-
export
|
|
6
|
+
export class LatenciesCacheInRedis implements ILatenciesCacheAsync {
|
|
7
7
|
|
|
8
8
|
private readonly redis: Redis;
|
|
9
9
|
private readonly keys: KeyBuilderSS;
|
|
@@ -2,8 +2,8 @@ import ioredis from 'ioredis';
|
|
|
2
2
|
import { ILogger } from '../../logger/types';
|
|
3
3
|
import { merge, isString } from '../../utils/lang';
|
|
4
4
|
import { _Set, setToArray, ISet } from '../../utils/lang/sets';
|
|
5
|
-
import thenable from '../../utils/promise/thenable';
|
|
6
|
-
import timeout from '../../utils/promise/timeout';
|
|
5
|
+
import { thenable } from '../../utils/promise/thenable';
|
|
6
|
+
import { timeout } from '../../utils/promise/timeout';
|
|
7
7
|
|
|
8
8
|
const LOG_PREFIX = 'storage:redis-adapter: ';
|
|
9
9
|
|
|
@@ -32,7 +32,7 @@ interface IRedisCommand {
|
|
|
32
32
|
/**
|
|
33
33
|
* Redis adapter on top of the library of choice (written with ioredis) for some extra control.
|
|
34
34
|
*/
|
|
35
|
-
export
|
|
35
|
+
export class RedisAdapter extends ioredis {
|
|
36
36
|
private readonly log: ILogger
|
|
37
37
|
private _options: object;
|
|
38
38
|
private _notReadyCommandsQueue?: IRedisCommand[];
|
|
@@ -2,10 +2,10 @@ import { Redis } from 'ioredis';
|
|
|
2
2
|
import { ILogger } from '../../logger/types';
|
|
3
3
|
import { isNaNNumber } from '../../utils/lang';
|
|
4
4
|
import { LOG_PREFIX } from '../inLocalStorage/constants';
|
|
5
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
5
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
6
6
|
import { ISegmentsCacheAsync } from '../types';
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export class SegmentsCacheInRedis implements ISegmentsCacheAsync {
|
|
9
9
|
|
|
10
10
|
private readonly log: ILogger;
|
|
11
11
|
private readonly redis: Redis;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
2
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
3
|
import { Redis } from 'ioredis';
|
|
4
4
|
import { ILogger } from '../../logger/types';
|
|
5
5
|
import { LOG_PREFIX } from './constants';
|
|
6
6
|
import { ISplit } from '../../dtos/types';
|
|
7
|
-
import AbstractSplitsCacheAsync from '../AbstractSplitsCacheAsync';
|
|
7
|
+
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Discard errors for an answer of multiple operations.
|
|
@@ -20,7 +20,7 @@ function processPipelineAnswer(results: Array<[Error | null, string]>): string[]
|
|
|
20
20
|
* ISplitsCacheAsync implementation that stores split definitions in Redis.
|
|
21
21
|
* Supported by Node.
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
23
|
+
export class SplitsCacheInRedis extends AbstractSplitsCacheAsync {
|
|
24
24
|
|
|
25
25
|
private readonly log: ILogger;
|
|
26
26
|
private readonly redis: Redis;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import RedisAdapter from './RedisAdapter';
|
|
1
|
+
import { RedisAdapter } from './RedisAdapter';
|
|
2
2
|
import { IStorageAsync, IStorageAsyncFactory, IStorageFactoryParams } from '../types';
|
|
3
3
|
import { validatePrefix } from '../KeyBuilder';
|
|
4
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
5
|
-
import SplitsCacheInRedis from './SplitsCacheInRedis';
|
|
6
|
-
import SegmentsCacheInRedis from './SegmentsCacheInRedis';
|
|
7
|
-
import ImpressionsCacheInRedis from './ImpressionsCacheInRedis';
|
|
8
|
-
import EventsCacheInRedis from './EventsCacheInRedis';
|
|
9
|
-
import LatenciesCacheInRedis from './LatenciesCacheInRedis';
|
|
10
|
-
import CountsCacheInRedis from './CountsCacheInRedis';
|
|
4
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
5
|
+
import { SplitsCacheInRedis } from './SplitsCacheInRedis';
|
|
6
|
+
import { SegmentsCacheInRedis } from './SegmentsCacheInRedis';
|
|
7
|
+
import { ImpressionsCacheInRedis } from './ImpressionsCacheInRedis';
|
|
8
|
+
import { EventsCacheInRedis } from './EventsCacheInRedis';
|
|
9
|
+
import { LatenciesCacheInRedis } from './LatenciesCacheInRedis';
|
|
10
|
+
import { CountsCacheInRedis } from './CountsCacheInRedis';
|
|
11
11
|
import { STORAGE_REDIS } from '../../utils/constants';
|
|
12
12
|
|
|
13
13
|
export interface InRedisStorageOptions {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
2
|
/* eslint-disable no-unused-vars */
|
|
3
3
|
import { isNaNNumber } from '../../utils/lang';
|
|
4
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
4
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
5
5
|
import { IPluggableStorageWrapper, ISegmentsCacheAsync } from '../types';
|
|
6
6
|
import { ILogger } from '../../logger/types';
|
|
7
7
|
import { LOG_PREFIX } from './constants';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
|
-
import KeyBuilder from '../KeyBuilder';
|
|
2
|
+
import { KeyBuilder } from '../KeyBuilder';
|
|
3
3
|
import { IPluggableStorageWrapper } from '../types';
|
|
4
4
|
import { ILogger } from '../../logger/types';
|
|
5
5
|
import { ISplit } from '../../dtos/types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
|
-
import AbstractSplitsCacheAsync from '../AbstractSplitsCacheAsync';
|
|
7
|
+
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* ISplitsCacheAsync implementation for pluggable storages.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IPluggableStorageWrapper, IStorageAsync, IStorageAsyncFactory, IStorageFactoryParams } from '../types';
|
|
2
2
|
|
|
3
|
-
import KeyBuilderSS from '../KeyBuilderSS';
|
|
3
|
+
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
4
4
|
import { SplitsCachePluggable } from './SplitsCachePluggable';
|
|
5
5
|
import { SegmentsCachePluggable } from './SegmentsCachePluggable';
|
|
6
6
|
import { ImpressionsCachePluggable } from './ImpressionsCachePluggable';
|
|
@@ -9,9 +9,9 @@ import { wrapperAdapter, METHODS_TO_PROMISE_WRAP } from './wrapperAdapter';
|
|
|
9
9
|
import { isObject } from '../../utils/lang';
|
|
10
10
|
import { validatePrefix } from '../KeyBuilder';
|
|
11
11
|
import { CONSUMER_PARTIAL_MODE, STORAGE_PLUGGABLE } from '../../utils/constants';
|
|
12
|
-
import ImpressionsCacheInMemory from '../inMemory/ImpressionsCacheInMemory';
|
|
13
|
-
import EventsCacheInMemory from '../inMemory/EventsCacheInMemory';
|
|
14
|
-
import ImpressionCountsCacheInMemory from '../inMemory/ImpressionCountsCacheInMemory';
|
|
12
|
+
import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
|
|
13
|
+
import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
|
|
14
|
+
import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
|
|
15
15
|
|
|
16
16
|
const NO_VALID_WRAPPER = 'Expecting pluggable storage `wrapper` in options, but no valid wrapper instance was provided.';
|
|
17
17
|
const NO_VALID_WRAPPER_INTERFACE = 'The provided wrapper instance doesn’t follow the expected interface. Check our docs.';
|
package/src/storages/types.ts
CHANGED
|
@@ -70,7 +70,7 @@ export interface IPluggableStorageWrapper {
|
|
|
70
70
|
/** Integer operations */
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
|
-
* Increments in 1 the given `key` value or set it
|
|
73
|
+
* Increments in 1 the given `key` value or set it to 1 if the value doesn't exist.
|
|
74
74
|
*
|
|
75
75
|
* @function incr
|
|
76
76
|
* @param {string} key Key to increment
|
|
@@ -79,7 +79,7 @@ export interface IPluggableStorageWrapper {
|
|
|
79
79
|
*/
|
|
80
80
|
incr: (key: string) => Promise<number>
|
|
81
81
|
/**
|
|
82
|
-
* Decrements in 1 the given `key` value or set it
|
|
82
|
+
* Decrements in 1 the given `key` value or set it to -1 if the value doesn't exist.
|
|
83
83
|
*
|
|
84
84
|
* @function decr
|
|
85
85
|
* @param {string} key Key to decrement
|
|
@@ -7,7 +7,7 @@ export interface IMockSplitEntry {
|
|
|
7
7
|
config?: string
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export
|
|
10
|
+
export function parseCondition(data: IMockSplitEntry): ISplitCondition {
|
|
11
11
|
const treatment = data.treatment;
|
|
12
12
|
|
|
13
13
|
if (data.keys) {
|
|
@@ -5,7 +5,7 @@ import path from 'path';
|
|
|
5
5
|
// @ts-ignore
|
|
6
6
|
import yaml from 'js-yaml';
|
|
7
7
|
import { isString, endsWith, find, forOwn, uniq, } from '../../../utils/lang';
|
|
8
|
-
import parseCondition,
|
|
8
|
+
import { parseCondition, IMockSplitEntry } from './parseCondition';
|
|
9
9
|
import { ISplitPartial } from '../../../dtos/types';
|
|
10
10
|
import { ISettings, SplitIO } from '../../../types';
|
|
11
11
|
import { ILogger } from '../../../logger/types';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ISplitPartial } from '../../../dtos/types';
|
|
2
2
|
import { ISettings, SplitIO } from '../../../types';
|
|
3
3
|
import { isObject, forOwn } from '../../../utils/lang';
|
|
4
|
-
import parseCondition from './parseCondition';
|
|
4
|
+
import { parseCondition } from './parseCondition';
|
|
5
5
|
|
|
6
6
|
function hasTreatmentChanged(prev: string | SplitIO.TreatmentWithConfig, curr: string | SplitIO.TreatmentWithConfig) {
|
|
7
7
|
if (typeof prev !== typeof curr) return true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ISyncManager, ISyncManagerCS, ISyncManagerFactoryParams } from '../types';
|
|
2
|
-
import fromObjectSyncTaskFactory from './syncTasks/fromObjectSyncTask';
|
|
3
|
-
import objectAssign from '
|
|
2
|
+
import { fromObjectSyncTaskFactory } from './syncTasks/fromObjectSyncTask';
|
|
3
|
+
import { objectAssign } from '../../utils/lang/objectAssign';
|
|
4
4
|
import { ISplitsParser } from './splitsParser/types';
|
|
5
5
|
import { IReadinessManager } from '../../readiness/types';
|
|
6
6
|
import { SDK_SEGMENTS_ARRIVED } from '../../readiness/constants';
|
|
@@ -3,7 +3,7 @@ import { IReadinessManager } from '../../../readiness/types';
|
|
|
3
3
|
import { ISplitsCacheSync } from '../../../storages/types';
|
|
4
4
|
import { ISplitsParser } from '../splitsParser/types';
|
|
5
5
|
import { ISplitPartial } from '../../../dtos/types';
|
|
6
|
-
import syncTaskFactory from '../../syncTask';
|
|
6
|
+
import { syncTaskFactory } from '../../syncTask';
|
|
7
7
|
import { ISyncTask } from '../../types';
|
|
8
8
|
import { ISettings } from '../../../types';
|
|
9
9
|
import { CONTROL } from '../../../utils/constants';
|
|
@@ -79,7 +79,7 @@ export function fromObjectUpdaterFactory(
|
|
|
79
79
|
/**
|
|
80
80
|
* PollingManager in Offline mode
|
|
81
81
|
*/
|
|
82
|
-
export
|
|
82
|
+
export function fromObjectSyncTaskFactory(
|
|
83
83
|
splitsParser: ISplitsParser,
|
|
84
84
|
storage: { splits: ISplitsCacheSync },
|
|
85
85
|
readiness: IReadinessManager,
|
|
@@ -6,7 +6,7 @@ import { IMySegmentsFetcher } from './types';
|
|
|
6
6
|
* Factory of MySegments fetcher.
|
|
7
7
|
* MySegments fetcher is a wrapper around `mySegments` API service that parses the response and handle errors.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export function mySegmentsFetcherFactory(fetchMySegments: IFetchMySegments, userMatchingKey: string): IMySegmentsFetcher {
|
|
10
10
|
|
|
11
11
|
return function mySegmentsFetcher(
|
|
12
12
|
noCache?: boolean,
|
|
@@ -21,7 +21,7 @@ function greedyFetch(fetchSegmentChanges: IFetchSegmentChanges, since: number, s
|
|
|
21
21
|
* Factory of SegmentChanges fetcher.
|
|
22
22
|
* SegmentChanges fetcher is a wrapper around `segmentChanges` API service that parses the response and handle errors and retries.
|
|
23
23
|
*/
|
|
24
|
-
export
|
|
24
|
+
export function segmentChangesFetcherFactory(fetchSegmentChanges: IFetchSegmentChanges): ISegmentChangesFetcher {
|
|
25
25
|
|
|
26
26
|
return function segmentChangesFetcher(
|
|
27
27
|
since: number,
|
|
@@ -5,7 +5,7 @@ import { ISplitChangesFetcher } from './types';
|
|
|
5
5
|
* Factory of SplitChanges fetcher.
|
|
6
6
|
* SplitChanges fetcher is a wrapper around `splitChanges` API service that parses the response and handle errors.
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
8
|
+
export function splitChangesFetcherFactory(fetchSplitChanges: IFetchSplitChanges): ISplitChangesFetcher {
|
|
9
9
|
|
|
10
10
|
return function splitChangesFetcher(
|
|
11
11
|
since: number,
|
|
@@ -3,8 +3,8 @@ import { forOwn } from '../../utils/lang';
|
|
|
3
3
|
import { IReadinessManager } from '../../readiness/types';
|
|
4
4
|
import { ISplitApi } from '../../services/types';
|
|
5
5
|
import { IStorageSync } from '../../storages/types';
|
|
6
|
-
import mySegmentsSyncTaskFactory from './syncTasks/mySegmentsSyncTask';
|
|
7
|
-
import splitsSyncTaskFactory from './syncTasks/splitsSyncTask';
|
|
6
|
+
import { mySegmentsSyncTaskFactory } from './syncTasks/mySegmentsSyncTask';
|
|
7
|
+
import { splitsSyncTaskFactory } from './syncTasks/splitsSyncTask';
|
|
8
8
|
import { ISettings } from '../../types';
|
|
9
9
|
import { getMatching } from '../../utils/key';
|
|
10
10
|
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED } from '../../readiness/constants';
|
|
@@ -14,7 +14,7 @@ import { POLLING_SMART_PAUSING, POLLING_START, POLLING_STOP } from '../../logger
|
|
|
14
14
|
* Expose start / stop mechanism for polling data from services.
|
|
15
15
|
* For client-side API with multiple clients.
|
|
16
16
|
*/
|
|
17
|
-
export
|
|
17
|
+
export function pollingManagerCSFactory(
|
|
18
18
|
splitApi: ISplitApi,
|
|
19
19
|
storage: IStorageSync,
|
|
20
20
|
readiness: IReadinessManager,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import splitsSyncTaskFactory from './syncTasks/splitsSyncTask';
|
|
2
|
-
import segmentsSyncTaskFactory from './syncTasks/segmentsSyncTask';
|
|
1
|
+
import { splitsSyncTaskFactory } from './syncTasks/splitsSyncTask';
|
|
2
|
+
import { segmentsSyncTaskFactory } from './syncTasks/segmentsSyncTask';
|
|
3
3
|
import { IStorageSync } from '../../storages/types';
|
|
4
4
|
import { IReadinessManager } from '../../readiness/types';
|
|
5
5
|
import { ISplitApi } from '../../services/types';
|
|
6
6
|
import { ISettings } from '../../types';
|
|
7
7
|
import { IPollingManager, ISegmentsSyncTask, ISplitsSyncTask } from './types';
|
|
8
|
-
import thenable from '../../utils/promise/thenable';
|
|
8
|
+
import { thenable } from '../../utils/promise/thenable';
|
|
9
9
|
import { POLLING_START, POLLING_STOP, LOG_PREFIX_SYNC_POLLING } from '../../logger/constants';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Expose start / stop mechanism for pulling data from services.
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
14
|
+
export function pollingManagerSSFactory(
|
|
15
15
|
splitApi: ISplitApi,
|
|
16
16
|
storage: IStorageSync,
|
|
17
17
|
readiness: IReadinessManager,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { IStorageSync } from '../../../storages/types';
|
|
2
2
|
import { IReadinessManager } from '../../../readiness/types';
|
|
3
|
-
import syncTaskFactory from '../../syncTask';
|
|
3
|
+
import { syncTaskFactory } from '../../syncTask';
|
|
4
4
|
import { ISegmentsSyncTask } from '../types';
|
|
5
5
|
import { IFetchMySegments } from '../../../services/types';
|
|
6
|
-
import mySegmentsFetcherFactory from '../fetchers/mySegmentsFetcher';
|
|
6
|
+
import { mySegmentsFetcherFactory } from '../fetchers/mySegmentsFetcher';
|
|
7
7
|
import { ISettings } from '../../../types';
|
|
8
8
|
import { mySegmentsUpdaterFactory } from '../updaters/mySegmentsUpdater';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Creates a sync task that periodically executes a `mySegmentsUpdater` task
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
13
|
+
export function mySegmentsSyncTaskFactory(
|
|
14
14
|
fetchMySegments: IFetchMySegments,
|
|
15
15
|
storage: IStorageSync,
|
|
16
16
|
readiness: IReadinessManager,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IStorageSync } from '../../../storages/types';
|
|
2
2
|
import { IReadinessManager } from '../../../readiness/types';
|
|
3
|
-
import syncTaskFactory from '../../syncTask';
|
|
3
|
+
import { syncTaskFactory } from '../../syncTask';
|
|
4
4
|
import { ISegmentsSyncTask } from '../types';
|
|
5
|
-
import segmentChangesFetcherFactory from '../fetchers/segmentChangesFetcher';
|
|
5
|
+
import { segmentChangesFetcherFactory } from '../fetchers/segmentChangesFetcher';
|
|
6
6
|
import { IFetchSegmentChanges } from '../../../services/types';
|
|
7
7
|
import { ISettings } from '../../../types';
|
|
8
8
|
import { segmentChangesUpdaterFactory } from '../updaters/segmentChangesUpdater';
|
|
@@ -10,7 +10,7 @@ import { segmentChangesUpdaterFactory } from '../updaters/segmentChangesUpdater'
|
|
|
10
10
|
/**
|
|
11
11
|
* Creates a sync task that periodically executes a `segmentChangesUpdater` task
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
13
|
+
export function segmentsSyncTaskFactory(
|
|
14
14
|
fetchSegmentChanges: IFetchSegmentChanges,
|
|
15
15
|
storage: IStorageSync,
|
|
16
16
|
readiness: IReadinessManager,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IStorageSync } from '../../../storages/types';
|
|
2
2
|
import { IReadinessManager } from '../../../readiness/types';
|
|
3
|
-
import syncTaskFactory from '../../syncTask';
|
|
3
|
+
import { syncTaskFactory } from '../../syncTask';
|
|
4
4
|
import { ISplitsSyncTask } from '../types';
|
|
5
|
-
import splitChangesFetcherFactory from '../fetchers/splitChangesFetcher';
|
|
5
|
+
import { splitChangesFetcherFactory } from '../fetchers/splitChangesFetcher';
|
|
6
6
|
import { IFetchSplitChanges } from '../../../services/types';
|
|
7
7
|
import { ISettings } from '../../../types';
|
|
8
8
|
import { splitChangesUpdaterFactory } from '../updaters/splitChangesUpdater';
|
|
@@ -10,7 +10,7 @@ import { splitChangesUpdaterFactory } from '../updaters/splitChangesUpdater';
|
|
|
10
10
|
/**
|
|
11
11
|
* Creates a sync task that periodically executes a `splitChangesUpdater` task
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
13
|
+
export function splitsSyncTaskFactory(
|
|
14
14
|
fetchSplitChanges: IFetchSplitChanges,
|
|
15
15
|
storage: IStorageSync,
|
|
16
16
|
readiness: IReadinessManager,
|