@splitsoftware/splitio-commons 1.0.1-rc.5 → 1.2.0
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/CHANGES.txt +13 -3
- package/LICENSE +1 -1
- package/README.md +1 -1
- 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/info.js +1 -1
- 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/clientAttributesDecoration.js +108 -0
- package/cjs/sdkClient/clientCS.js +12 -10
- 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 +9 -10
- 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/AttributesCacheInMemory.js +70 -0
- 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 +8 -6
- 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 +18 -17
- 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/attribute.js +20 -0
- package/cjs/utils/inputValidation/attributes.js +13 -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 +5 -6
- 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/info.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/clientAttributesDecoration.js +104 -0
- package/esm/sdkClient/clientCS.js +10 -8
- package/esm/sdkClient/clientInputValidation.js +2 -2
- package/esm/sdkClient/sdkClient.js +3 -3
- package/esm/sdkClient/sdkClientMethodCS.js +4 -4
- package/esm/sdkClient/sdkClientMethodCSWithTT.js +4 -4
- package/esm/sdkFactory/index.js +6 -6
- 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/AttributesCacheInMemory.js +67 -0
- 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 +7 -4
- 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 +10 -9
- 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/attribute.js +16 -0
- package/esm/utils/inputValidation/attributes.js +11 -0
- 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 +3 -3
- 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/info.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/clientAttributesDecoration.ts +122 -0
- package/src/sdkClient/clientCS.ts +13 -8
- package/src/sdkClient/clientInputValidation.ts +2 -2
- package/src/sdkClient/sdkClient.ts +3 -3
- package/src/sdkClient/sdkClientMethodCS.ts +4 -2
- package/src/sdkClient/sdkClientMethodCSWithTT.ts +4 -2
- package/src/sdkFactory/index.ts +6 -6
- 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/AttributesCacheInMemory.ts +73 -0
- 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 +6 -3
- 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 +10 -9
- 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/types.ts +39 -0
- 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/attribute.ts +21 -0
- package/src/utils/inputValidation/attributes.ts +14 -0
- 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 +3 -3
- 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/logger/browser/{debugLogger.d.ts → DebugLogger.d.ts} +0 -0
- package/types/logger/browser/{errorLogger.d.ts → ErrorLogger.d.ts} +0 -0
- package/types/logger/browser/{infoLogger.d.ts → InfoLogger.d.ts} +0 -0
- package/types/logger/browser/{warnLogger.d.ts → WarnLogger.d.ts} +0 -0
- package/types/readiness/sdkReadinessManager.d.ts +1 -1
- package/types/sdkClient/client.d.ts +1 -1
- package/types/sdkClient/clientAttributesDecoration.d.ts +51 -0
- package/types/sdkClient/clientCS.d.ts +2 -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/AttributesCacheInMemory.d.ts +43 -0
- 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/types.d.ts +39 -0
- 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/inputValidation/attribute.d.ts +2 -0
- package/types/utils/inputValidation/attributes.d.ts +1 -0
- 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
- package/src/logger/.DS_Store +0 -0
- package/types/integrations/ga/GaToSplitPlugin.d.ts +0 -3
- package/types/integrations/ga/SplitToGaPlugin.d.ts +0 -4
- package/types/logger/codes.d.ts +0 -2
- package/types/logger/codesConstants.d.ts +0 -117
- package/types/logger/codesConstantsBrowser.d.ts +0 -2
- package/types/logger/codesConstantsNode.d.ts +0 -14
- package/types/logger/codesDebug.d.ts +0 -1
- package/types/logger/codesDebugBrowser.d.ts +0 -1
- package/types/logger/codesDebugNode.d.ts +0 -1
- package/types/logger/codesError.d.ts +0 -1
- package/types/logger/codesErrorNode.d.ts +0 -1
- package/types/logger/codesInfo.d.ts +0 -1
- package/types/logger/codesWarn.d.ts +0 -1
- package/types/logger/codesWarnNode.d.ts +0 -1
- package/types/logger/debugLogger.d.ts +0 -2
- package/types/logger/errorLogger.d.ts +0 -2
- package/types/logger/infoLogger.d.ts +0 -2
- package/types/logger/messages/debugBrowser.d.ts +0 -1
- package/types/logger/messages/debugNode.d.ts +0 -1
- package/types/logger/messages/errorNode.d.ts +0 -1
- package/types/logger/messages/warnNode.d.ts +0 -1
- package/types/logger/noopLogger.d.ts +0 -2
- package/types/logger/warnLogger.d.ts +0 -2
- package/types/sdkManager/sdkManagerMethod.d.ts +0 -6
- package/types/storages/getRegisteredSegments.d.ts +0 -10
- package/types/sync/polling/syncTasks/splitsSyncTask.copy.d.ts +0 -35
- package/types/sync/polling/syncTasks/splitsSyncTask.morelikeoriginal.d.ts +0 -35
- package/types/sync/streaming/AuthClient/indexV1.d.ts +0 -12
- package/types/sync/streaming/AuthClient/indexV2.d.ts +0 -8
- package/types/sync/streaming/pushManagerCS.d.ts +0 -12
- package/types/sync/streaming/pushManagerNoUsers.d.ts +0 -13
- package/types/sync/streaming/pushManagerSS.d.ts +0 -11
- package/types/sync/syncManagerFromFile.d.ts +0 -2
- package/types/sync/syncManagerFromObject.d.ts +0 -2
- package/types/sync/syncManagerOffline.d.ts +0 -9
- package/types/utils/lang/errors.d.ts +0 -10
- package/types/utils/murmur3/commons.d.ts +0 -12
- package/types/utils/settingsValidation/buildMetadata.d.ts +0 -3
- package/types/utils/settingsValidation/localhost/index.d.ts +0 -9
- package/types/utils/settingsValidation/logger.d.ts +0 -11
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setTransform = void 0;
|
|
3
4
|
/**
|
|
4
5
|
* Extract whitelist array. Used by set and string matchers
|
|
5
6
|
*/
|
|
6
|
-
function
|
|
7
|
+
function setTransform(whitelistObject) {
|
|
7
8
|
return whitelistObject.whitelist;
|
|
8
9
|
}
|
|
9
|
-
exports.
|
|
10
|
+
exports.setTransform = setTransform;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.numericTransform = void 0;
|
|
3
4
|
/**
|
|
4
5
|
* Extract value from unary matcher data.
|
|
5
6
|
*/
|
|
6
|
-
function
|
|
7
|
+
function numericTransform(unaryNumericObject) {
|
|
7
8
|
return unaryNumericObject.value;
|
|
8
9
|
}
|
|
9
|
-
exports.
|
|
10
|
+
exports.numericTransform = numericTransform;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.whitelistTransform = void 0;
|
|
3
4
|
var sets_1 = require("../../utils/lang/sets");
|
|
4
5
|
/**
|
|
5
6
|
* Extract whitelist as a set. Used by 'WHITELIST' matcher.
|
|
6
7
|
*/
|
|
7
|
-
function
|
|
8
|
+
function whitelistTransform(whitelistObject) {
|
|
8
9
|
return new sets_1._Set(whitelistObject.whitelist);
|
|
9
10
|
}
|
|
10
|
-
exports.
|
|
11
|
+
exports.whitelistTransform = whitelistTransform;
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
var matchersTransform_1 =
|
|
5
|
-
var treatments_1 =
|
|
6
|
-
var matchers_1 =
|
|
7
|
-
var value_1 =
|
|
8
|
-
var condition_1 =
|
|
9
|
-
var ifelseif_1 =
|
|
10
|
-
var and_1 =
|
|
11
|
-
var thenable_1 =
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
var matchersTransform_1 = require("../matchersTransform");
|
|
5
|
+
var treatments_1 = require("../treatments");
|
|
6
|
+
var matchers_1 = require("../matchers");
|
|
7
|
+
var value_1 = require("../value");
|
|
8
|
+
var condition_1 = require("../condition");
|
|
9
|
+
var ifelseif_1 = require("../combiners/ifelseif");
|
|
10
|
+
var and_1 = require("../combiners/and");
|
|
11
|
+
var thenable_1 = require("../../utils/promise/thenable");
|
|
12
12
|
function parser(log, conditions, storage) {
|
|
13
13
|
var predicates = [];
|
|
14
14
|
for (var i = 0; i < conditions.length; i++) {
|
|
15
15
|
var _a = conditions[i], matcherGroup = _a.matcherGroup, partitions = _a.partitions, label = _a.label, conditionType = _a.conditionType;
|
|
16
16
|
// transform data structure
|
|
17
|
-
var matchers = matchersTransform_1.
|
|
17
|
+
var matchers = matchersTransform_1.matchersTransform(matcherGroup.matchers);
|
|
18
18
|
// create a set of pure functions from the matcher's dto
|
|
19
19
|
var expressions = matchers.map(function (matcherDto) {
|
|
20
|
-
var matcher = matchers_1.
|
|
20
|
+
var matcher = matchers_1.matcherFactory(log, matcherDto, storage);
|
|
21
21
|
// Evaluator function.
|
|
22
22
|
return function (key, attributes, splitEvaluator) {
|
|
23
|
-
var value = value_1.
|
|
23
|
+
var value = value_1.sanitizeValue(log, key, matcherDto, attributes);
|
|
24
24
|
var result = value !== undefined && matcher ? matcher(value, splitEvaluator) : false;
|
|
25
|
-
if (thenable_1.
|
|
25
|
+
if (thenable_1.thenable(result)) {
|
|
26
26
|
// @ts-ignore
|
|
27
27
|
return result.then(function (res) { return Boolean(res ^ matcherDto.negate); });
|
|
28
28
|
}
|
|
@@ -38,9 +38,9 @@ function parser(log, conditions, storage) {
|
|
|
38
38
|
// and break the loop
|
|
39
39
|
break;
|
|
40
40
|
}
|
|
41
|
-
predicates.push(condition_1.
|
|
41
|
+
predicates.push(condition_1.conditionContext(log, and_1.andCombinerContext(log, expressions), treatments_1.Treatments.parse(partitions), label, conditionType));
|
|
42
42
|
}
|
|
43
43
|
// Instanciate evaluator given the set of conditions using if else if logic
|
|
44
|
-
return ifelseif_1.
|
|
44
|
+
return ifelseif_1.ifElseIfCombinerContext(log, predicates);
|
|
45
45
|
}
|
|
46
|
-
exports.
|
|
46
|
+
exports.parser = parser;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Treatments = void 0;
|
|
3
4
|
var lang_1 = require("../../utils/lang");
|
|
4
5
|
var Treatments = /** @class */ (function () {
|
|
5
6
|
function Treatments(ranges, treatments) {
|
|
@@ -38,4 +39,4 @@ var Treatments = /** @class */ (function () {
|
|
|
38
39
|
};
|
|
39
40
|
return Treatments;
|
|
40
41
|
}());
|
|
41
|
-
exports.
|
|
42
|
+
exports.Treatments = Treatments;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
var sanitize_1 =
|
|
3
|
+
exports.sanitizeValue = void 0;
|
|
4
|
+
var sanitize_1 = require("./sanitize");
|
|
5
5
|
var constants_1 = require("../../logger/constants");
|
|
6
6
|
function parseValue(log, key, attributeName, attributes) {
|
|
7
7
|
var value = undefined;
|
|
@@ -22,10 +22,10 @@ function parseValue(log, key, attributeName, attributes) {
|
|
|
22
22
|
/**
|
|
23
23
|
* Defines value to be matched (key / attribute).
|
|
24
24
|
*/
|
|
25
|
-
function
|
|
25
|
+
function sanitizeValue(log, key, matcherDto, attributes) {
|
|
26
26
|
var attributeName = matcherDto.attribute;
|
|
27
27
|
var valueToMatch = parseValue(log, key, attributeName, attributes);
|
|
28
|
-
var sanitizedValue = sanitize_1.
|
|
28
|
+
var sanitizedValue = sanitize_1.sanitize(log, matcherDto.type, valueToMatch, matcherDto.dataType, attributes);
|
|
29
29
|
if (sanitizedValue !== undefined) {
|
|
30
30
|
return sanitizedValue;
|
|
31
31
|
}
|
|
@@ -34,4 +34,4 @@ function value(log, key, matcherDto, attributes) {
|
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
exports.
|
|
37
|
+
exports.sanitizeValue = sanitizeValue;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitize = void 0;
|
|
3
4
|
var lang_1 = require("../../utils/lang");
|
|
4
5
|
var convertions_1 = require("../convertions");
|
|
5
6
|
var matcherTypes_1 = require("../matchers/matcherTypes");
|
|
@@ -89,4 +90,4 @@ function sanitize(log, matcherTypeID, value, dataType, attributes) {
|
|
|
89
90
|
log.debug(constants_1.ENGINE_SANITIZE, [value, dataType, sanitizedValue instanceof Object ? JSON.stringify(sanitizedValue) : sanitizedValue]);
|
|
90
91
|
return sanitizedValue;
|
|
91
92
|
}
|
|
92
|
-
exports.
|
|
93
|
+
exports.sanitize = sanitize;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.integrationsManagerFactory = void 0;
|
|
4
4
|
var browser_1 = require("../utils/constants/browser");
|
|
5
|
-
var pluggable_1 =
|
|
5
|
+
var pluggable_1 = require("./pluggable");
|
|
6
6
|
var GoogleAnalyticsToSplit_1 = require("./ga/GoogleAnalyticsToSplit");
|
|
7
7
|
var SplitToGoogleAnalytics_1 = require("./ga/SplitToGoogleAnalytics");
|
|
8
8
|
/**
|
|
@@ -26,6 +26,6 @@ function integrationsManagerFactory(integrations, params) {
|
|
|
26
26
|
.filter(function (integrationFactory) {
|
|
27
27
|
return integrationFactory && typeof integrationFactory === 'function';
|
|
28
28
|
});
|
|
29
|
-
return pluggable_1.
|
|
29
|
+
return pluggable_1.pluggableIntegrationsManagerFactory(integrationFactories, params);
|
|
30
30
|
}
|
|
31
|
-
exports.
|
|
31
|
+
exports.integrationsManagerFactory = integrationsManagerFactory;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GaToSplit = exports.fixEventTypeId = exports.validateEventData = exports.validateIdentities = exports.defaultPrefix = exports.defaultMapper = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
4
|
/* eslint-disable no-undef */
|
|
6
|
-
var
|
|
5
|
+
var objectAssign_1 = require("../../utils/lang/objectAssign");
|
|
7
6
|
var lang_1 = require("../../utils/lang");
|
|
8
7
|
var inputValidation_1 = require("../../utils/inputValidation");
|
|
9
8
|
var logPrefix = 'ga-to-split: ';
|
|
@@ -173,7 +172,7 @@ function GaToSplit(sdkOptions, params) {
|
|
|
173
172
|
// Constructor for the SplitTracker plugin.
|
|
174
173
|
function SplitTracker(tracker, pluginOptions) {
|
|
175
174
|
// precedence of options: SDK options (config.integrations) overwrite pluginOptions (`ga('require', 'splitTracker', pluginOptions)`)
|
|
176
|
-
var opts =
|
|
175
|
+
var opts = objectAssign_1.objectAssign({}, defaultOptions, sdkOptions, pluginOptions);
|
|
177
176
|
this.tracker = tracker;
|
|
178
177
|
// Validate identities
|
|
179
178
|
var validIdentities = validateIdentities(opts.identities);
|
|
@@ -234,7 +233,7 @@ function GaToSplit(sdkOptions, params) {
|
|
|
234
233
|
}
|
|
235
234
|
else { // Store the event for each Key-TT pair (identities), if key and TT is not present in eventData
|
|
236
235
|
opts.identities.forEach(function (identity) {
|
|
237
|
-
var event =
|
|
236
|
+
var event = objectAssign_1.objectAssign({
|
|
238
237
|
key: identity.key,
|
|
239
238
|
trafficTypeName: identity.trafficType,
|
|
240
239
|
}, eventData);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pluggableIntegrationsManagerFactory = void 0;
|
|
3
4
|
var constants_1 = require("../utils/constants");
|
|
4
5
|
/**
|
|
5
6
|
* Factory function for IntegrationsManager with pluggable integrations.
|
|
@@ -10,7 +11,7 @@ var constants_1 = require("../utils/constants");
|
|
|
10
11
|
*
|
|
11
12
|
* @returns integration manager or undefined if `integrations` are not present in settings.
|
|
12
13
|
*/
|
|
13
|
-
function
|
|
14
|
+
function pluggableIntegrationsManagerFactory(integrations, params) {
|
|
14
15
|
var listeners = [];
|
|
15
16
|
// No need to check if `settings.integrations` is an array of functions. It was already validated
|
|
16
17
|
integrations.forEach(function (integrationFactory) {
|
|
@@ -31,4 +32,4 @@ function integrationsManagerFactory(integrations, params) {
|
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
|
-
exports.
|
|
35
|
+
exports.pluggableIntegrationsManagerFactory = pluggableIntegrationsManagerFactory;
|
package/cjs/listeners/browser.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.BrowserSignalListener = void 0;
|
|
4
4
|
var impressionsSyncTask_1 = require("../sync/submitters/impressionsSyncTask");
|
|
5
5
|
var impressionCountsSyncTask_1 = require("../sync/submitters/impressionCountsSyncTask");
|
|
6
6
|
var constants_1 = require("../utils/constants");
|
|
7
|
-
var
|
|
7
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
8
8
|
var constants_2 = require("../logger/constants");
|
|
9
9
|
// 'unload' event is used instead of 'beforeunload', since 'unload' is not a cancelable event, so no other listeners can stop the event from occurring.
|
|
10
10
|
var UNLOAD_DOM_EVENT = 'unload';
|
|
@@ -88,7 +88,7 @@ var BrowserSignalListener = /** @class */ (function () {
|
|
|
88
88
|
};
|
|
89
89
|
// Extend with endpoint specific metadata where needed
|
|
90
90
|
if (extraMetadata)
|
|
91
|
-
|
|
91
|
+
objectAssign_1.objectAssign(json, extraMetadata);
|
|
92
92
|
// Stringify the payload
|
|
93
93
|
var payload = JSON.stringify(json);
|
|
94
94
|
// eslint-disable-next-line compat/compat
|
|
@@ -98,4 +98,4 @@ var BrowserSignalListener = /** @class */ (function () {
|
|
|
98
98
|
};
|
|
99
99
|
return BrowserSignalListener;
|
|
100
100
|
}());
|
|
101
|
-
exports.
|
|
101
|
+
exports.BrowserSignalListener = BrowserSignalListener;
|
package/cjs/listeners/node.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
var thenable_1 =
|
|
3
|
+
exports.NodeSignalListener = void 0;
|
|
4
|
+
var thenable_1 = require("../utils/promise/thenable");
|
|
5
5
|
var constants_1 = require("../logger/constants");
|
|
6
6
|
var SIGTERM = 'SIGTERM';
|
|
7
7
|
var EVENT_NAME = 'for SIGTERM signal.';
|
|
@@ -55,7 +55,7 @@ var NodeSignalListener = /** @class */ (function () {
|
|
|
55
55
|
catch (err) {
|
|
56
56
|
this.settings.log.error(constants_1.LOG_PREFIX_CLEANUP + "Error with Split SDK graceful shutdown: " + err);
|
|
57
57
|
}
|
|
58
|
-
if (thenable_1.
|
|
58
|
+
if (thenable_1.thenable(handlerResult)) {
|
|
59
59
|
// Always exit, even with errors. The promise is returned for UT purposses.
|
|
60
60
|
return handlerResult.then(wrapUp).catch(wrapUp);
|
|
61
61
|
}
|
|
@@ -65,4 +65,4 @@ var NodeSignalListener = /** @class */ (function () {
|
|
|
65
65
|
};
|
|
66
66
|
return NodeSignalListener;
|
|
67
67
|
}());
|
|
68
|
-
exports.
|
|
68
|
+
exports.NodeSignalListener = NodeSignalListener;
|
package/cjs/logger/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Logger = exports._sprintf = exports.isLogLevelString = exports.LogLevels = void 0;
|
|
4
|
-
var
|
|
5
|
-
var object_assign_1 = tslib_1.__importDefault(require("object-assign"));
|
|
4
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
6
5
|
var lang_1 = require("../utils/lang");
|
|
7
6
|
var maps_1 = require("../utils/lang/maps");
|
|
8
7
|
exports.LogLevels = {
|
|
@@ -40,7 +39,7 @@ var defaultOptions = {
|
|
|
40
39
|
};
|
|
41
40
|
var Logger = /** @class */ (function () {
|
|
42
41
|
function Logger(options, codes) {
|
|
43
|
-
this.options =
|
|
42
|
+
this.options = objectAssign_1.objectAssign({}, defaultOptions, options);
|
|
44
43
|
this.codes = codes || new maps_1._Map();
|
|
45
44
|
this.logLevel = LogLevelIndexes[this.options.logLevel];
|
|
46
45
|
}
|
|
@@ -25,7 +25,7 @@ exports.codesInfo = warn_1.codesWarn.concat([
|
|
|
25
25
|
[c.SUBMITTERS_PUSH, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Pushing %s %s.'],
|
|
26
26
|
[c.STREAMING_REFRESH_TOKEN, c.LOG_PREFIX_SYNC_STREAMING + 'Refreshing streaming token in %s seconds, and connecting streaming in %s seconds.'],
|
|
27
27
|
[c.STREAMING_RECONNECT, c.LOG_PREFIX_SYNC_STREAMING + 'Attempting to reconnect in %s seconds.'],
|
|
28
|
-
[c.STREAMING_CONNECTING, c.LOG_PREFIX_SYNC_STREAMING + '
|
|
28
|
+
[c.STREAMING_CONNECTING, c.LOG_PREFIX_SYNC_STREAMING + 'Connecting to streaming.'],
|
|
29
29
|
[c.STREAMING_DISABLED, c.LOG_PREFIX_SYNC_STREAMING + 'Streaming is disabled for given Api key. Switching to polling mode.'],
|
|
30
30
|
[c.STREAMING_DISCONNECTING, c.LOG_PREFIX_SYNC_STREAMING + 'Disconnecting from streaming.'],
|
|
31
31
|
[c.SYNC_START_POLLING, c.LOG_PREFIX_SYNC_MANAGER + 'Streaming not available. Starting polling.'],
|
|
@@ -24,9 +24,9 @@ exports.codesWarn = error_1.codesError.concat([
|
|
|
24
24
|
[c.WARN_TRIMMING_PROPERTIES, '%s: Event has more than 300 properties. Some of them will be trimmed when processed.'],
|
|
25
25
|
[c.WARN_CONVERTING, '%s: %s "%s" is not of type string, converting.'],
|
|
26
26
|
[c.WARN_TRIMMING, '%s: %s "%s" has extra whitespace, trimming.'],
|
|
27
|
-
[c.WARN_NOT_EXISTENT_SPLIT, '%s: split "%s" does not exist in this environment, please double check what splits exist in the web console.'],
|
|
27
|
+
[c.WARN_NOT_EXISTENT_SPLIT, '%s: split "%s" does not exist in this environment, please double check what splits exist in the Split web console.'],
|
|
28
28
|
[c.WARN_LOWERCASE_TRAFFIC_TYPE, '%s: traffic_type_name should be all lowercase - converting string to lowercase.'],
|
|
29
|
-
[c.WARN_NOT_EXISTENT_TT, '%s: traffic type "%s" does not have any corresponding split in this environment, make sure you\'re tracking your events to a valid traffic type defined in the web console.'],
|
|
29
|
+
[c.WARN_NOT_EXISTENT_TT, '%s: traffic type "%s" does not have any corresponding split in this environment, make sure you\'re tracking your events to a valid traffic type defined in the Split web console.'],
|
|
30
30
|
// initialization / settings validation
|
|
31
31
|
[c.WARN_INTEGRATION_INVALID, c.LOG_PREFIX_SETTINGS + ': %s integration item(s) at settings is invalid. %s'],
|
|
32
32
|
[c.WARN_SPLITS_FILTER_IGNORED, c.LOG_PREFIX_SETTINGS + ': split filters have been configured but will have no effect if mode is not "%s", since synchronization is being deferred to an external tool.'],
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.readinessManagerFactory = void 0;
|
|
4
|
-
var
|
|
5
|
-
var object_assign_1 = tslib_1.__importDefault(require("object-assign"));
|
|
4
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
6
5
|
var constants_1 = require("./constants");
|
|
7
6
|
function splitsEventEmitterFactory(EventEmitter) {
|
|
8
|
-
var splitsEventEmitter =
|
|
7
|
+
var splitsEventEmitter = objectAssign_1.objectAssign(new EventEmitter(), {
|
|
9
8
|
splitsArrived: false,
|
|
10
9
|
splitsCacheLoaded: false,
|
|
11
10
|
});
|
|
@@ -18,7 +17,7 @@ function splitsEventEmitterFactory(EventEmitter) {
|
|
|
18
17
|
return splitsEventEmitter;
|
|
19
18
|
}
|
|
20
19
|
function segmentsEventEmitterFactory(EventEmitter) {
|
|
21
|
-
var segmentsEventEmitter =
|
|
20
|
+
var segmentsEventEmitter = objectAssign_1.objectAssign(new EventEmitter(), {
|
|
22
21
|
segmentsArrived: false
|
|
23
22
|
});
|
|
24
23
|
segmentsEventEmitter.once(constants_1.SDK_SEGMENTS_ARRIVED, function () { segmentsEventEmitter.segmentsArrived = true; });
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var wrapper_1 =
|
|
3
|
+
exports.sdkReadinessManagerFactory = void 0;
|
|
4
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
5
|
+
var wrapper_1 = require("../utils/promise/wrapper");
|
|
6
6
|
var readinessManager_1 = require("./readinessManager");
|
|
7
7
|
var constants_1 = require("./constants");
|
|
8
8
|
var constants_2 = require("../logger/constants");
|
|
@@ -47,7 +47,7 @@ function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalRea
|
|
|
47
47
|
log.error(err);
|
|
48
48
|
}
|
|
49
49
|
function generateReadyPromise() {
|
|
50
|
-
var promise = wrapper_1.
|
|
50
|
+
var promise = wrapper_1.promiseWrapper(new Promise(function (resolve, reject) {
|
|
51
51
|
readinessManager.gate.once(constants_1.SDK_READY, function () {
|
|
52
52
|
log.info(constants_2.CLIENT_READY);
|
|
53
53
|
if (readyCbCount === internalReadyCbCount && !promise.hasOnFulfilled())
|
|
@@ -65,7 +65,7 @@ function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalRea
|
|
|
65
65
|
if (internalReadyCbCount === void 0) { internalReadyCbCount = 0; }
|
|
66
66
|
return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalReadyCbCount, readinessManager.shared(readyTimeout));
|
|
67
67
|
},
|
|
68
|
-
sdkStatus:
|
|
68
|
+
sdkStatus: objectAssign_1.objectAssign(
|
|
69
69
|
// Expose Event Emitter functionality
|
|
70
70
|
Object.create(readinessManager.gate), {
|
|
71
71
|
// Expose the event constants without changing the interface
|
|
@@ -97,7 +97,7 @@ function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalRea
|
|
|
97
97
|
ready: function () {
|
|
98
98
|
if (readinessManager.hasTimedout()) {
|
|
99
99
|
if (!readinessManager.isReady()) {
|
|
100
|
-
return wrapper_1.
|
|
100
|
+
return wrapper_1.promiseWrapper(Promise.reject('Split SDK has emitted SDK_READY_TIMED_OUT event.'), defaultOnRejected);
|
|
101
101
|
}
|
|
102
102
|
else {
|
|
103
103
|
return Promise.resolve();
|
|
@@ -118,4 +118,4 @@ function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, internalRea
|
|
|
118
118
|
})
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
|
-
exports.
|
|
121
|
+
exports.sdkReadinessManagerFactory = sdkReadinessManagerFactory;
|
package/cjs/sdkClient/client.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.clientFactory = void 0;
|
|
4
4
|
var evaluator_1 = require("../evaluator");
|
|
5
|
-
var thenable_1 =
|
|
5
|
+
var thenable_1 = require("../utils/promise/thenable");
|
|
6
6
|
var key_1 = require("../utils/key");
|
|
7
7
|
var splitExistance_1 = require("../utils/inputValidation/splitExistance");
|
|
8
8
|
var trafficTypeExistance_1 = require("../utils/inputValidation/trafficTypeExistance");
|
|
@@ -24,7 +24,7 @@ function clientFactory(params) {
|
|
|
24
24
|
return treatment;
|
|
25
25
|
};
|
|
26
26
|
var evaluation = evaluator_1.evaluateFeature(log, key, splitName, attributes, storage);
|
|
27
|
-
return thenable_1.
|
|
27
|
+
return thenable_1.thenable(evaluation) ? evaluation.then(function (res) { return wrapUp(res); }) : wrapUp(evaluation);
|
|
28
28
|
}
|
|
29
29
|
function getTreatmentWithConfig(key, splitName, attributes) {
|
|
30
30
|
return getTreatment(key, splitName, attributes, true);
|
|
@@ -41,7 +41,7 @@ function clientFactory(params) {
|
|
|
41
41
|
return treatments;
|
|
42
42
|
};
|
|
43
43
|
var evaluations = evaluator_1.evaluateFeatures(log, key, splitNames, attributes, storage);
|
|
44
|
-
return thenable_1.
|
|
44
|
+
return thenable_1.thenable(evaluations) ? evaluations.then(function (res) { return wrapUp(res); }) : wrapUp(evaluations);
|
|
45
45
|
}
|
|
46
46
|
function getTreatmentsWithConfig(key, splitNames, attributes) {
|
|
47
47
|
return getTreatments(key, splitNames, attributes, true);
|
|
@@ -101,4 +101,4 @@ function clientFactory(params) {
|
|
|
101
101
|
track: track
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
|
-
exports.
|
|
104
|
+
exports.clientFactory = clientFactory;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clientAttributesDecoration = void 0;
|
|
4
|
+
var AttributesCacheInMemory_1 = require("../storages/inMemory/AttributesCacheInMemory");
|
|
5
|
+
var attributes_1 = require("../utils/inputValidation/attributes");
|
|
6
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
7
|
+
/**
|
|
8
|
+
* Add in memory attributes storage methods and combine them with any attribute received from the getTreatment/s call
|
|
9
|
+
*/
|
|
10
|
+
function clientAttributesDecoration(log, client) {
|
|
11
|
+
var attributeStorage = new AttributesCacheInMemory_1.AttributesCacheInMemory();
|
|
12
|
+
// Keep a reference to the original methods
|
|
13
|
+
var clientGetTreatment = client.getTreatment;
|
|
14
|
+
var clientGetTreatmentWithConfig = client.getTreatmentWithConfig;
|
|
15
|
+
var clientGetTreatments = client.getTreatments;
|
|
16
|
+
var clientGetTreatmentsWithConfig = client.getTreatmentsWithConfig;
|
|
17
|
+
var clientTrack = client.track;
|
|
18
|
+
function getTreatment(maybeKey, maybeSplit, maybeAttributes) {
|
|
19
|
+
return clientGetTreatment(maybeKey, maybeSplit, combineAttributes(maybeAttributes));
|
|
20
|
+
}
|
|
21
|
+
function getTreatmentWithConfig(maybeKey, maybeSplit, maybeAttributes) {
|
|
22
|
+
return clientGetTreatmentWithConfig(maybeKey, maybeSplit, combineAttributes(maybeAttributes));
|
|
23
|
+
}
|
|
24
|
+
function getTreatments(maybeKey, maybeSplits, maybeAttributes) {
|
|
25
|
+
return clientGetTreatments(maybeKey, maybeSplits, combineAttributes(maybeAttributes));
|
|
26
|
+
}
|
|
27
|
+
function getTreatmentsWithConfig(maybeKey, maybeSplits, maybeAttributes) {
|
|
28
|
+
return clientGetTreatmentsWithConfig(maybeKey, maybeSplits, combineAttributes(maybeAttributes));
|
|
29
|
+
}
|
|
30
|
+
function track(maybeKey, maybeTT, maybeEvent, maybeEventValue, maybeProperties) {
|
|
31
|
+
return clientTrack(maybeKey, maybeTT, maybeEvent, maybeEventValue, maybeProperties);
|
|
32
|
+
}
|
|
33
|
+
function combineAttributes(maybeAttributes) {
|
|
34
|
+
var storedAttributes = attributeStorage.getAll();
|
|
35
|
+
if (Object.keys(storedAttributes).length > 0) {
|
|
36
|
+
return objectAssign_1.objectAssign({}, storedAttributes, maybeAttributes);
|
|
37
|
+
}
|
|
38
|
+
return maybeAttributes;
|
|
39
|
+
}
|
|
40
|
+
return objectAssign_1.objectAssign(client, {
|
|
41
|
+
getTreatment: getTreatment,
|
|
42
|
+
getTreatmentWithConfig: getTreatmentWithConfig,
|
|
43
|
+
getTreatments: getTreatments,
|
|
44
|
+
getTreatmentsWithConfig: getTreatmentsWithConfig,
|
|
45
|
+
track: track,
|
|
46
|
+
/**
|
|
47
|
+
* Add an attribute to client's in memory attributes storage
|
|
48
|
+
*
|
|
49
|
+
* @param {string} attributeName Attrinute name
|
|
50
|
+
* @param {string, number, boolean, list} attributeValue Attribute value
|
|
51
|
+
* @returns {boolean} true if the attribute was stored and false otherways
|
|
52
|
+
*/
|
|
53
|
+
setAttribute: function (attributeName, attributeValue) {
|
|
54
|
+
var attribute = {};
|
|
55
|
+
attribute[attributeName] = attributeValue;
|
|
56
|
+
if (!attributes_1.validateAttributesDeep(log, attribute, 'setAttribute'))
|
|
57
|
+
return false;
|
|
58
|
+
log.debug("stored " + attributeValue + " for attribute " + attributeName);
|
|
59
|
+
return attributeStorage.setAttribute(attributeName, attributeValue);
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* Returns the attribute with the given key
|
|
63
|
+
*
|
|
64
|
+
* @param {string} attributeName Attribute name
|
|
65
|
+
* @returns {Object} Attribute with the given key
|
|
66
|
+
*/
|
|
67
|
+
getAttribute: function (attributeName) {
|
|
68
|
+
log.debug("retrieved attribute " + attributeName);
|
|
69
|
+
return attributeStorage.getAttribute(attributeName + '');
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* Add to client's in memory attributes storage the attributes in 'attributes'
|
|
73
|
+
*
|
|
74
|
+
* @param {Object} attributes Object with attributes to store
|
|
75
|
+
* @returns true if attributes were stored an false otherways
|
|
76
|
+
*/
|
|
77
|
+
setAttributes: function (attributes) {
|
|
78
|
+
if (!attributes_1.validateAttributesDeep(log, attributes, 'setAttributes'))
|
|
79
|
+
return false;
|
|
80
|
+
return attributeStorage.setAttributes(attributes);
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Return all the attributes stored in client's in memory attributes storage
|
|
84
|
+
*
|
|
85
|
+
* @returns {Object} returns all the stored attributes
|
|
86
|
+
*/
|
|
87
|
+
getAttributes: function () {
|
|
88
|
+
return attributeStorage.getAll();
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Removes from client's in memory attributes storage the attribute with the given key
|
|
92
|
+
*
|
|
93
|
+
* @param {string} attributeName
|
|
94
|
+
* @returns {boolean} true if attribute was removed and false otherways
|
|
95
|
+
*/
|
|
96
|
+
removeAttribute: function (attributeName) {
|
|
97
|
+
log.debug("removed attribute " + attributeName);
|
|
98
|
+
return attributeStorage.removeAttribute(attributeName + '');
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* Remove all the stored attributes in the client's in memory attribute storage
|
|
102
|
+
*/
|
|
103
|
+
clearAttributes: function () {
|
|
104
|
+
return attributeStorage.clear();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
exports.clientAttributesDecoration = clientAttributesDecoration;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
var
|
|
3
|
+
exports.clientCSDecorator = void 0;
|
|
4
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
5
|
+
var clientAttributesDecoration_1 = require("./clientAttributesDecoration");
|
|
5
6
|
/**
|
|
6
7
|
* Decorator that binds a key and (optionally) a traffic type to client methods
|
|
7
8
|
*
|
|
@@ -9,15 +10,16 @@ var object_assign_1 = tslib_1.__importDefault(require("object-assign"));
|
|
|
9
10
|
* @param key validated split key
|
|
10
11
|
* @param trafficType validated traffic type
|
|
11
12
|
*/
|
|
12
|
-
function clientCSDecorator(client, key, trafficType) {
|
|
13
|
-
|
|
13
|
+
function clientCSDecorator(log, client, key, trafficType) {
|
|
14
|
+
var clientCS = clientAttributesDecoration_1.clientAttributesDecoration(log, client);
|
|
15
|
+
return objectAssign_1.objectAssign(clientCS, {
|
|
14
16
|
// In the client-side API, we bind a key to the client `getTreatment*` methods
|
|
15
|
-
getTreatment:
|
|
16
|
-
getTreatmentWithConfig:
|
|
17
|
-
getTreatments:
|
|
18
|
-
getTreatmentsWithConfig:
|
|
17
|
+
getTreatment: clientCS.getTreatment.bind(clientCS, key),
|
|
18
|
+
getTreatmentWithConfig: clientCS.getTreatmentWithConfig.bind(clientCS, key),
|
|
19
|
+
getTreatments: clientCS.getTreatments.bind(clientCS, key),
|
|
20
|
+
getTreatmentsWithConfig: clientCS.getTreatmentsWithConfig.bind(clientCS, key),
|
|
19
21
|
// Key is bound to the `track` method. Same thing happens with trafficType but only if provided
|
|
20
|
-
track: trafficType ?
|
|
22
|
+
track: trafficType ? clientCS.track.bind(clientCS, key, trafficType) : clientCS.track.bind(clientCS, key)
|
|
21
23
|
});
|
|
22
24
|
}
|
|
23
|
-
exports.
|
|
25
|
+
exports.clientCSDecorator = clientCSDecorator;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
var
|
|
3
|
+
exports.clientInputValidationDecorator = void 0;
|
|
4
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
5
5
|
var inputValidation_1 = require("../utils/inputValidation");
|
|
6
6
|
var lang_1 = require("../utils/lang");
|
|
7
7
|
var constants_1 = require("../utils/constants");
|
|
@@ -49,7 +49,7 @@ function clientInputValidationDecorator(log, client, readinessManager, isStorage
|
|
|
49
49
|
return client.getTreatmentWithConfig(params.key, params.splitOrSplits, params.attributes);
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
52
|
-
return wrapResult(
|
|
52
|
+
return wrapResult(objectAssign_1.objectAssign({}, constants_1.CONTROL_WITH_CONFIG));
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
function getTreatments(maybeKey, maybeSplits, maybeAttributes) {
|
|
@@ -72,7 +72,7 @@ function clientInputValidationDecorator(log, client, readinessManager, isStorage
|
|
|
72
72
|
else {
|
|
73
73
|
var res_2 = {};
|
|
74
74
|
if (params.splitOrSplits)
|
|
75
|
-
params.splitOrSplits.forEach(function (split) { return res_2[split] =
|
|
75
|
+
params.splitOrSplits.forEach(function (split) { return res_2[split] = objectAssign_1.objectAssign({}, constants_1.CONTROL_WITH_CONFIG); });
|
|
76
76
|
return wrapResult(res_2);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -100,4 +100,4 @@ function clientInputValidationDecorator(log, client, readinessManager, isStorage
|
|
|
100
100
|
track: track
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
|
-
exports.
|
|
103
|
+
exports.clientInputValidationDecorator = clientInputValidationDecorator;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.sdkClientFactory = void 0;
|
|
4
|
-
var
|
|
5
|
-
var object_assign_1 = tslib_1.__importDefault(require("object-assign"));
|
|
4
|
+
var objectAssign_1 = require("../utils/lang/objectAssign");
|
|
6
5
|
var constants_1 = require("../utils/constants");
|
|
7
6
|
var apiKey_1 = require("../utils/inputValidation/apiKey");
|
|
8
|
-
var client_1 =
|
|
9
|
-
var clientInputValidation_1 =
|
|
7
|
+
var client_1 = require("./client");
|
|
8
|
+
var clientInputValidation_1 = require("./clientInputValidation");
|
|
10
9
|
/**
|
|
11
10
|
* Creates an Sdk client, i.e., a base client with status and destroy interface
|
|
12
11
|
*/
|
|
13
12
|
function sdkClientFactory(params) {
|
|
14
13
|
var sdkReadinessManager = params.sdkReadinessManager, syncManager = params.syncManager, storage = params.storage, signalListener = params.signalListener, settings = params.settings, sharedClient = params.sharedClient;
|
|
15
|
-
return
|
|
14
|
+
return objectAssign_1.objectAssign(
|
|
16
15
|
// Proto-linkage of the readiness Event Emitter
|
|
17
16
|
Object.create(sdkReadinessManager.sdkStatus),
|
|
18
17
|
// Client API (getTreatment* & track methods)
|
|
19
|
-
clientInputValidation_1.
|
|
18
|
+
clientInputValidation_1.clientInputValidationDecorator(settings.log, client_1.clientFactory(params), sdkReadinessManager.readinessManager,
|
|
20
19
|
// storage is async if and only if mode is consumer or partial consumer
|
|
21
20
|
[constants_1.CONSUMER_MODE, constants_1.CONSUMER_PARTIAL_MODE].indexOf(settings.mode) === -1 ? true : false),
|
|
22
21
|
// Sdk destroy
|