@splitsoftware/splitio-commons 1.6.2-rc.1 → 1.6.2-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/listeners/browser.js +1 -2
- package/cjs/logger/constants.js +1 -2
- package/cjs/sdkClient/clientAttributesDecoration.js +1 -1
- package/cjs/sdkFactory/index.js +6 -13
- package/cjs/services/splitApi.js +1 -20
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/cjs/sync/submitters/submitterManager.js +0 -3
- package/cjs/trackers/impressionsTracker.js +28 -7
- package/cjs/utils/constants/index.js +2 -3
- package/cjs/utils/key/index.js +1 -1
- package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
- package/cjs/utils/settingsValidation/index.js +1 -3
- package/esm/listeners/browser.js +2 -3
- package/esm/logger/constants.js +0 -1
- package/esm/sdkClient/clientAttributesDecoration.js +1 -1
- package/esm/sdkFactory/index.js +6 -13
- package/esm/services/splitApi.js +1 -20
- package/esm/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/esm/sync/submitters/submitterManager.js +0 -3
- package/esm/trackers/impressionsTracker.js +28 -7
- package/esm/utils/constants/index.js +0 -1
- package/esm/utils/key/index.js +1 -1
- package/esm/utils/settingsValidation/impressionsMode.js +3 -3
- package/esm/utils/settingsValidation/index.js +1 -3
- package/package.json +4 -5
- package/src/consent/sdkUserConsent.ts +4 -3
- package/src/dtos/types.ts +0 -8
- package/src/evaluator/Engine.ts +3 -3
- package/src/evaluator/combiners/and.ts +1 -1
- package/src/evaluator/combiners/ifelseif.ts +3 -3
- package/src/evaluator/condition/engineUtils.ts +1 -1
- package/src/evaluator/condition/index.ts +6 -6
- package/src/evaluator/index.ts +10 -10
- package/src/evaluator/matchers/all.ts +1 -1
- package/src/evaluator/matchers/between.ts +1 -1
- package/src/evaluator/matchers/boolean.ts +1 -1
- package/src/evaluator/matchers/cont_all.ts +1 -1
- package/src/evaluator/matchers/cont_any.ts +1 -1
- package/src/evaluator/matchers/cont_str.ts +1 -1
- package/src/evaluator/matchers/dependency.ts +1 -1
- package/src/evaluator/matchers/eq.ts +1 -1
- package/src/evaluator/matchers/eq_set.ts +1 -1
- package/src/evaluator/matchers/ew.ts +1 -1
- package/src/evaluator/matchers/gte.ts +1 -1
- package/src/evaluator/matchers/index.ts +1 -1
- package/src/evaluator/matchers/lte.ts +1 -1
- package/src/evaluator/matchers/part_of.ts +1 -1
- package/src/evaluator/matchers/segment.ts +1 -1
- package/src/evaluator/matchers/string.ts +1 -1
- package/src/evaluator/matchers/sw.ts +1 -1
- package/src/evaluator/matchers/whitelist.ts +1 -1
- package/src/evaluator/parser/index.ts +3 -3
- package/src/evaluator/types.ts +6 -6
- package/src/evaluator/value/index.ts +4 -4
- package/src/evaluator/value/sanitize.ts +4 -4
- package/src/integrations/ga/GaToSplit.ts +6 -6
- package/src/integrations/ga/SplitToGa.ts +10 -10
- package/src/integrations/ga/types.ts +4 -4
- package/src/integrations/pluggable.ts +3 -3
- package/src/integrations/types.ts +2 -2
- package/src/listeners/browser.ts +2 -3
- package/src/logger/.DS_Store +0 -0
- package/src/logger/constants.ts +0 -1
- package/src/logger/index.ts +3 -3
- package/src/logger/sdkLogger.ts +1 -2
- package/src/logger/types.ts +0 -16
- package/src/readiness/sdkReadinessManager.ts +1 -1
- package/src/readiness/types.ts +2 -9
- package/src/sdkClient/client.ts +13 -13
- package/src/sdkClient/clientAttributesDecoration.ts +13 -13
- package/src/sdkClient/clientCS.ts +3 -4
- package/src/sdkClient/clientInputValidation.ts +15 -15
- package/src/sdkClient/sdkClient.ts +2 -2
- package/src/sdkClient/sdkClientMethod.ts +2 -2
- package/src/sdkClient/sdkClientMethodCS.ts +9 -9
- package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
- package/src/sdkFactory/index.ts +8 -17
- package/src/sdkFactory/types.ts +8 -11
- package/src/sdkManager/index.ts +5 -5
- package/src/services/splitApi.ts +1 -22
- package/src/services/types.ts +0 -6
- package/src/storages/dataLoader.ts +2 -2
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +2 -2
- package/src/storages/inLocalStorage/index.ts +3 -2
- package/src/storages/inMemory/AttributesCacheInMemory.ts +13 -12
- package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
- package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
- package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/RedisAdapter.ts +1 -1
- package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/SplitsCacheInRedis.ts +1 -1
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
- package/src/storages/inRedis/index.ts +3 -2
- package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
- package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
- package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
- package/src/storages/pluggable/SplitsCachePluggable.ts +1 -1
- package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
- package/src/storages/pluggable/index.ts +3 -3
- package/src/storages/pluggable/wrapperAdapter.ts +1 -1
- package/src/storages/types.ts +46 -35
- package/src/sync/offline/LocalhostFromObject.ts +4 -4
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
- package/src/sync/polling/updaters/splitChangesUpdater.ts +1 -1
- package/src/sync/streaming/SSEHandler/index.ts +1 -1
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
- package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
- package/src/sync/submitters/submitter.ts +1 -1
- package/src/sync/submitters/submitterManager.ts +0 -2
- package/src/sync/submitters/types.ts +3 -22
- package/src/sync/syncTask.ts +1 -1
- package/src/trackers/eventTracker.ts +3 -3
- package/src/trackers/impressionsTracker.ts +37 -15
- package/src/trackers/types.ts +4 -34
- package/src/types.d.ts +1581 -0
- package/src/utils/constants/index.ts +1 -2
- package/src/utils/inputValidation/apiKey.ts +1 -1
- package/src/utils/inputValidation/attribute.ts +1 -1
- package/src/utils/inputValidation/attributes.ts +3 -3
- package/src/utils/inputValidation/event.ts +1 -1
- package/src/utils/inputValidation/eventProperties.ts +3 -3
- package/src/utils/inputValidation/eventValue.ts +1 -1
- package/src/utils/inputValidation/isOperational.ts +1 -1
- package/src/utils/inputValidation/key.ts +3 -3
- package/src/utils/inputValidation/preloadedData.ts +3 -3
- package/src/utils/inputValidation/split.ts +1 -1
- package/src/utils/inputValidation/splitExistance.ts +1 -1
- package/src/utils/inputValidation/splits.ts +1 -1
- package/src/utils/inputValidation/trafficType.ts +1 -1
- package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
- package/src/utils/key/index.ts +9 -9
- package/src/utils/settingsValidation/consent.ts +1 -2
- package/src/utils/settingsValidation/impressionsMode.ts +6 -6
- package/src/utils/settingsValidation/index.ts +1 -4
- package/src/utils/settingsValidation/integrations/common.ts +1 -1
- package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
- package/src/utils/settingsValidation/integrations/pluggable.ts +1 -2
- package/src/utils/settingsValidation/localhost/builtin.ts +1 -2
- package/src/utils/settingsValidation/localhost/pluggable.ts +1 -2
- package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
- package/src/utils/settingsValidation/logger/pluggableLogger.ts +1 -2
- package/src/utils/settingsValidation/splitFilters.ts +7 -9
- package/src/utils/settingsValidation/storage/storageCS.ts +1 -2
- package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -70
- package/cjs/trackers/strategy/strategyDebug.js +0 -25
- package/cjs/trackers/strategy/strategyNone.js +0 -29
- package/cjs/trackers/strategy/strategyOptimized.js +0 -34
- package/cjs/trackers/uniqueKeysTracker.js +0 -69
- package/cjs/types.js +0 -2
- package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -64
- package/esm/trackers/strategy/strategyDebug.js +0 -21
- package/esm/trackers/strategy/strategyNone.js +0 -25
- package/esm/trackers/strategy/strategyOptimized.js +0 -30
- package/esm/trackers/uniqueKeysTracker.js +0 -65
- package/esm/types.js +0 -1
- package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -79
- package/src/trackers/strategy/strategyDebug.ts +0 -28
- package/src/trackers/strategy/strategyNone.ts +0 -34
- package/src/trackers/strategy/strategyOptimized.ts +0 -42
- package/src/trackers/uniqueKeysTracker.ts +0 -80
- package/src/types.ts +0 -1264
- package/types/consent/index.d.ts +0 -2
- package/types/consent/sdkUserConsent.d.ts +0 -13
- package/types/dtos/types.d.ts +0 -172
- package/types/evaluator/Engine.d.ts +0 -15
- package/types/evaluator/combiners/and.d.ts +0 -4
- package/types/evaluator/combiners/ifelseif.d.ts +0 -3
- package/types/evaluator/condition/engineUtils.d.ts +0 -11
- package/types/evaluator/condition/index.d.ts +0 -6
- package/types/evaluator/convertions/index.d.ts +0 -2
- package/types/evaluator/index.d.ts +0 -7
- package/types/evaluator/matchers/all.d.ts +0 -2
- package/types/evaluator/matchers/between.d.ts +0 -3
- package/types/evaluator/matchers/boolean.d.ts +0 -2
- package/types/evaluator/matchers/cont_all.d.ts +0 -2
- package/types/evaluator/matchers/cont_any.d.ts +0 -2
- package/types/evaluator/matchers/cont_str.d.ts +0 -2
- package/types/evaluator/matchers/dependency.d.ts +0 -5
- package/types/evaluator/matchers/eq.d.ts +0 -2
- package/types/evaluator/matchers/eq_set.d.ts +0 -2
- package/types/evaluator/matchers/ew.d.ts +0 -2
- package/types/evaluator/matchers/gte.d.ts +0 -2
- package/types/evaluator/matchers/index.d.ts +0 -7
- package/types/evaluator/matchers/lte.d.ts +0 -2
- package/types/evaluator/matchers/matcherTypes.d.ts +0 -10
- package/types/evaluator/matchers/part_of.d.ts +0 -2
- package/types/evaluator/matchers/segment.d.ts +0 -6
- package/types/evaluator/matchers/string.d.ts +0 -2
- package/types/evaluator/matchers/sw.d.ts +0 -2
- package/types/evaluator/matchers/whitelist.d.ts +0 -3
- package/types/evaluator/matchersTransform/index.d.ts +0 -6
- package/types/evaluator/matchersTransform/segment.d.ts +0 -5
- package/types/evaluator/matchersTransform/set.d.ts +0 -5
- package/types/evaluator/matchersTransform/unaryNumeric.d.ts +0 -5
- package/types/evaluator/matchersTransform/whitelist.d.ts +0 -5
- package/types/evaluator/parser/index.d.ts +0 -5
- package/types/evaluator/treatments/index.d.ts +0 -8
- package/types/evaluator/types.d.ts +0 -28
- package/types/evaluator/value/index.d.ts +0 -7
- package/types/evaluator/value/sanitize.d.ts +0 -7
- package/types/index.d.ts +0 -5
- package/types/integrations/browser.d.ts +0 -12
- package/types/integrations/ga/GaToSplit.d.ts +0 -40
- package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +0 -3
- package/types/integrations/ga/SplitToGa.d.ts +0 -34
- package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +0 -3
- package/types/integrations/ga/types.d.ts +0 -148
- package/types/integrations/pluggable.d.ts +0 -11
- package/types/integrations/types.d.ts +0 -17
- package/types/listeners/browser.d.ts +0 -40
- package/types/listeners/node.d.ts +0 -22
- package/types/listeners/types.d.ts +0 -4
- package/types/logger/browser/DebugLogger.d.ts +0 -2
- package/types/logger/browser/ErrorLogger.d.ts +0 -2
- package/types/logger/browser/InfoLogger.d.ts +0 -2
- package/types/logger/browser/WarnLogger.d.ts +0 -2
- package/types/logger/constants.d.ts +0 -142
- package/types/logger/index.d.ts +0 -22
- package/types/logger/messages/debug.d.ts +0 -1
- package/types/logger/messages/error.d.ts +0 -1
- package/types/logger/messages/info.d.ts +0 -1
- package/types/logger/messages/warn.d.ts +0 -1
- package/types/logger/sdkLogger.d.ts +0 -8
- package/types/logger/types.d.ts +0 -17
- package/types/readiness/constants.d.ts +0 -7
- package/types/readiness/readinessManager.d.ts +0 -6
- package/types/readiness/sdkReadinessManager.d.ts +0 -11
- package/types/readiness/types.d.ts +0 -60
- package/types/sdkClient/client.d.ts +0 -6
- package/types/sdkClient/clientAttributesDecoration.d.ts +0 -51
- package/types/sdkClient/clientCS.d.ts +0 -10
- package/types/sdkClient/clientInputValidation.d.ts +0 -7
- package/types/sdkClient/sdkClient.d.ts +0 -6
- package/types/sdkClient/sdkClientMethod.d.ts +0 -6
- package/types/sdkClient/sdkClientMethodCS.d.ts +0 -7
- package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +0 -8
- package/types/sdkClient/types.d.ts +0 -18
- package/types/sdkFactory/index.d.ts +0 -6
- package/types/sdkFactory/types.d.ts +0 -82
- package/types/sdkManager/index.d.ts +0 -5
- package/types/services/splitApi.d.ts +0 -11
- package/types/services/splitHttpClient.d.ts +0 -10
- package/types/services/types.d.ts +0 -54
- package/types/storages/AbstractSegmentsCacheSync.d.ts +0 -55
- package/types/storages/AbstractSplitsCacheAsync.d.ts +0 -36
- package/types/storages/AbstractSplitsCacheSync.d.ts +0 -42
- package/types/storages/KeyBuilder.d.ts +0 -14
- package/types/storages/KeyBuilderCS.d.ts +0 -16
- package/types/storages/KeyBuilderSS.d.ts +0 -15
- package/types/storages/dataLoader.d.ts +0 -10
- package/types/storages/findLatencyIndex.d.ts +0 -7
- package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +0 -25
- package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +0 -51
- package/types/storages/inLocalStorage/constants.d.ts +0 -2
- package/types/storages/inLocalStorage/index.d.ts +0 -8
- package/types/storages/inMemory/AttributesCacheInMemory.d.ts +0 -43
- package/types/storages/inMemory/CountsCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/EventsCacheInMemory.d.ts +0 -35
- package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +0 -24
- package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +0 -30
- package/types/storages/inMemory/InMemoryStorage.d.ts +0 -10
- package/types/storages/inMemory/InMemoryStorageCS.d.ts +0 -10
- package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +0 -22
- package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +0 -19
- package/types/storages/inMemory/SplitsCacheInMemory.d.ts +0 -20
- package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +0 -53
- package/types/storages/inRedis/CountsCacheInRedis.d.ts +0 -9
- package/types/storages/inRedis/EventsCacheInRedis.d.ts +0 -32
- package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +0 -18
- package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +0 -9
- package/types/storages/inRedis/RedisAdapter.d.ts +0 -24
- package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +0 -18
- package/types/storages/inRedis/SplitsCacheInRedis.d.ts +0 -91
- package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +0 -20
- package/types/storages/inRedis/constants.d.ts +0 -1
- package/types/storages/inRedis/index.d.ts +0 -10
- package/types/storages/metadataBuilder.d.ts +0 -3
- package/types/storages/pluggable/EventsCachePluggable.d.ts +0 -38
- package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +0 -35
- package/types/storages/pluggable/SegmentsCachePluggable.d.ts +0 -54
- package/types/storages/pluggable/SplitsCachePluggable.d.ts +0 -89
- package/types/storages/pluggable/TelemetryCachePluggable.d.ts +0 -18
- package/types/storages/pluggable/constants.d.ts +0 -1
- package/types/storages/pluggable/inMemoryWrapper.d.ts +0 -13
- package/types/storages/pluggable/index.d.ts +0 -9
- package/types/storages/pluggable/wrapperAdapter.d.ts +0 -12
- package/types/storages/types.d.ts +0 -417
- package/types/sync/offline/LocalhostFromFile.d.ts +0 -2
- package/types/sync/offline/LocalhostFromObject.d.ts +0 -2
- package/types/sync/offline/splitsParser/parseCondition.d.ts +0 -7
- package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +0 -2
- package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +0 -3
- package/types/sync/offline/splitsParser/types.d.ts +0 -3
- package/types/sync/offline/syncManagerOffline.d.ts +0 -10
- package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +0 -17
- package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +0 -7
- package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +0 -7
- package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +0 -7
- package/types/sync/polling/fetchers/types.d.ts +0 -5
- package/types/sync/polling/pollingManagerCS.d.ts +0 -7
- package/types/sync/polling/pollingManagerSS.d.ts +0 -6
- package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +0 -9
- package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +0 -9
- package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +0 -9
- package/types/sync/polling/types.d.ts +0 -26
- package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +0 -13
- package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +0 -18
- package/types/sync/polling/updaters/splitChangesUpdater.d.ts +0 -39
- package/types/sync/streaming/AuthClient/index.d.ts +0 -12
- package/types/sync/streaming/AuthClient/types.d.ts +0 -17
- package/types/sync/streaming/SSEClient/index.d.ts +0 -34
- package/types/sync/streaming/SSEClient/types.d.ts +0 -11
- package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +0 -14
- package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +0 -20
- package/types/sync/streaming/SSEHandler/index.d.ts +0 -11
- package/types/sync/streaming/SSEHandler/types.d.ts +0 -67
- package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +0 -6
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +0 -8
- package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +0 -12
- package/types/sync/streaming/UpdateWorkers/constants.d.ts +0 -3
- package/types/sync/streaming/UpdateWorkers/types.d.ts +0 -4
- package/types/sync/streaming/constants.d.ts +0 -34
- package/types/sync/streaming/mySegmentsV2utils.d.ts +0 -27
- package/types/sync/streaming/pushManager.d.ts +0 -9
- package/types/sync/streaming/types.d.ts +0 -35
- package/types/sync/submitters/eventsSubmitter.d.ts +0 -5
- package/types/sync/submitters/eventsSyncTask.d.ts +0 -8
- package/types/sync/submitters/impressionCountsSubmitter.d.ts +0 -10
- package/types/sync/submitters/impressionCountsSyncTask.d.ts +0 -13
- package/types/sync/submitters/impressionsSubmitter.d.ts +0 -11
- package/types/sync/submitters/impressionsSyncTask.d.ts +0 -14
- package/types/sync/submitters/metricsSyncTask.d.ts +0 -12
- package/types/sync/submitters/submitter.d.ts +0 -12
- package/types/sync/submitters/submitterManager.d.ts +0 -3
- package/types/sync/submitters/submitterSyncTask.d.ts +0 -10
- package/types/sync/submitters/telemetrySubmitter.d.ts +0 -25
- package/types/sync/submitters/types.d.ts +0 -194
- package/types/sync/submitters/uniqueKeysSubmitter.d.ts +0 -19
- package/types/sync/syncManagerOnline.d.ts +0 -13
- package/types/sync/syncTask.d.ts +0 -13
- package/types/sync/syncTaskComposite.d.ts +0 -5
- package/types/sync/types.d.ts +0 -43
- package/types/trackers/eventTracker.d.ts +0 -10
- package/types/trackers/filter/bloomFilter.d.ts +0 -10
- package/types/trackers/filter/dictionaryFilter.d.ts +0 -8
- package/types/trackers/filter/types.d.ts +0 -5
- package/types/trackers/impressionObserver/ImpressionObserver.d.ts +0 -8
- package/types/trackers/impressionObserver/buildKey.d.ts +0 -2
- package/types/trackers/impressionObserver/impressionObserverCS.d.ts +0 -4
- package/types/trackers/impressionObserver/impressionObserverSS.d.ts +0 -4
- package/types/trackers/impressionObserver/types.d.ts +0 -4
- package/types/trackers/impressionObserver/utils.d.ts +0 -13
- package/types/trackers/impressionsTracker.d.ts +0 -13
- package/types/trackers/strategy/strategyDebug.d.ts +0 -9
- package/types/trackers/strategy/strategyNone.d.ts +0 -10
- package/types/trackers/strategy/strategyOptimized.d.ts +0 -11
- package/types/trackers/telemetryTracker.d.ts +0 -3
- package/types/trackers/types.d.ts +0 -65
- package/types/trackers/uniqueKeysTracker.d.ts +0 -13
- package/types/types.d.ts +0 -1262
- package/types/utils/Backoff.d.ts +0 -25
- package/types/utils/LRUCache/LinkedList.d.ts +0 -34
- package/types/utils/LRUCache/index.d.ts +0 -16
- package/types/utils/MinEventEmitter.d.ts +0 -12
- package/types/utils/MinEvents.d.ts +0 -4
- package/types/utils/base64/index.d.ts +0 -30
- package/types/utils/constants/browser.d.ts +0 -3
- package/types/utils/constants/index.d.ts +0 -63
- package/types/utils/decompress/index.d.ts +0 -16
- package/types/utils/env/isLocalStorageAvailable.d.ts +0 -1
- package/types/utils/env/isNode.d.ts +0 -5
- package/types/utils/inputValidation/apiKey.d.ts +0 -7
- package/types/utils/inputValidation/attribute.d.ts +0 -2
- package/types/utils/inputValidation/attributes.d.ts +0 -4
- package/types/utils/inputValidation/event.d.ts +0 -2
- package/types/utils/inputValidation/eventProperties.d.ts +0 -6
- package/types/utils/inputValidation/eventValue.d.ts +0 -2
- package/types/utils/inputValidation/index.d.ts +0 -13
- package/types/utils/inputValidation/isOperational.d.ts +0 -4
- package/types/utils/inputValidation/key.d.ts +0 -3
- package/types/utils/inputValidation/preloadedData.d.ts +0 -3
- package/types/utils/inputValidation/split.d.ts +0 -2
- package/types/utils/inputValidation/splitExistance.d.ts +0 -7
- package/types/utils/inputValidation/splits.d.ts +0 -2
- package/types/utils/inputValidation/trafficType.d.ts +0 -2
- package/types/utils/inputValidation/trafficTypeExistance.d.ts +0 -9
- package/types/utils/jwt/index.d.ts +0 -5
- package/types/utils/jwt/types.d.ts +0 -5
- package/types/utils/key/index.d.ts +0 -8
- package/types/utils/labels/index.d.ts +0 -7
- package/types/utils/lang/binarySearch.d.ts +0 -9
- package/types/utils/lang/getFnName.d.ts +0 -4
- package/types/utils/lang/getGlobal.d.ts +0 -4
- package/types/utils/lang/index.d.ts +0 -105
- package/types/utils/lang/maps.d.ts +0 -55
- package/types/utils/lang/objectAssign.d.ts +0 -3
- package/types/utils/lang/sets.d.ts +0 -60
- package/types/utils/murmur3/common.d.ts +0 -12
- package/types/utils/murmur3/legacy.d.ts +0 -2
- package/types/utils/murmur3/murmur3.d.ts +0 -2
- package/types/utils/murmur3/murmur3_128.d.ts +0 -6
- package/types/utils/murmur3/murmur3_128_x86.d.ts +0 -7
- package/types/utils/murmur3/murmur3_64.d.ts +0 -10
- package/types/utils/murmur3/utfx.d.ts +0 -27
- package/types/utils/promise/thenable.d.ts +0 -1
- package/types/utils/promise/timeout.d.ts +0 -1
- package/types/utils/promise/wrapper.d.ts +0 -21
- package/types/utils/settingsValidation/consent.d.ts +0 -6
- package/types/utils/settingsValidation/impressionsMode.d.ts +0 -3
- package/types/utils/settingsValidation/index.d.ts +0 -52
- package/types/utils/settingsValidation/integrations/common.d.ts +0 -14
- package/types/utils/settingsValidation/integrations/configurable.d.ts +0 -13
- package/types/utils/settingsValidation/integrations/pluggable.d.ts +0 -13
- package/types/utils/settingsValidation/localhost/builtin.d.ts +0 -16
- package/types/utils/settingsValidation/localhost/pluggable.d.ts +0 -16
- package/types/utils/settingsValidation/logger/builtinLogger.d.ts +0 -10
- package/types/utils/settingsValidation/logger/commons.d.ts +0 -9
- package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +0 -11
- package/types/utils/settingsValidation/mode.d.ts +0 -1
- package/types/utils/settingsValidation/runtime.d.ts +0 -2
- package/types/utils/settingsValidation/splitFilters.d.ts +0 -16
- package/types/utils/settingsValidation/storage/storageCS.d.ts +0 -21
- package/types/utils/settingsValidation/types.d.ts +0 -32
- package/types/utils/settingsValidation/url.d.ts +0 -10
- package/types/utils/time/index.d.ts +0 -4
- package/types/utils/timeTracker/index.d.ts +0 -70
- package/types/utils/timeTracker/now/browser.d.ts +0 -1
- package/types/utils/timeTracker/now/node.d.ts +0 -1
- package/types/utils/timeTracker/timer.d.ts +0 -1
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@splitsoftware/splitio-commons",
|
|
3
|
-
"version": "1.6.2-rc.
|
|
3
|
+
"version": "1.6.2-rc.4",
|
|
4
4
|
"description": "Split Javascript SDK common components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
7
|
-
"types": "types",
|
|
7
|
+
"types": "src/types.d.ts",
|
|
8
8
|
"files": [
|
|
9
9
|
"README.md",
|
|
10
10
|
"CONTRIBUTORS-GUIDE.md",
|
|
@@ -12,15 +12,14 @@
|
|
|
12
12
|
"CHANGES.txt",
|
|
13
13
|
"cjs",
|
|
14
14
|
"esm",
|
|
15
|
-
"src"
|
|
16
|
-
"types"
|
|
15
|
+
"src"
|
|
17
16
|
],
|
|
18
17
|
"scripts": {
|
|
19
18
|
"check": "npm run check:lint && npm run check:types",
|
|
20
19
|
"check:lint": "eslint src --ext .js,.ts",
|
|
21
20
|
"check:types": "tsc --noEmit",
|
|
22
21
|
"build": "npm run build:cjs && npm run build:esm",
|
|
23
|
-
"build:esm": "rimraf esm && tsc -m es2015 --outDir esm
|
|
22
|
+
"build:esm": "rimraf esm types && tsc -m es2015 --outDir esm",
|
|
24
23
|
"build:cjs": "rimraf cjs && tsc -m CommonJS --outDir cjs",
|
|
25
24
|
"test": "jest",
|
|
26
25
|
"test:coverage": "jest --coverage",
|
|
@@ -3,9 +3,10 @@ import { isConsentGranted } from './index';
|
|
|
3
3
|
import { CONSENT_GRANTED, CONSENT_DECLINED, CONSENT_UNKNOWN } from '../utils/constants';
|
|
4
4
|
import { isBoolean } from '../utils/lang';
|
|
5
5
|
import { ISdkFactoryContext } from '../sdkFactory/types';
|
|
6
|
+
import { IUserConsentAPI } from '../types';
|
|
6
7
|
|
|
7
8
|
// User consent enum
|
|
8
|
-
const ConsentStatus = {
|
|
9
|
+
const ConsentStatus: IUserConsentAPI['Status'] = {
|
|
9
10
|
GRANTED: CONSENT_GRANTED,
|
|
10
11
|
DECLINED: CONSENT_DECLINED,
|
|
11
12
|
UNKNOWN: CONSENT_UNKNOWN,
|
|
@@ -14,7 +15,7 @@ const ConsentStatus = {
|
|
|
14
15
|
/**
|
|
15
16
|
* The public user consent API exposed via SplitFactory, used to control if the SDK tracks and sends impressions and events or not.
|
|
16
17
|
*/
|
|
17
|
-
export function createUserConsentAPI(params: ISdkFactoryContext) {
|
|
18
|
+
export function createUserConsentAPI(params: ISdkFactoryContext): IUserConsentAPI {
|
|
18
19
|
const { settings, settings: { log }, syncManager, storage: { events, impressions, impressionCounts } } = params;
|
|
19
20
|
|
|
20
21
|
if (!isConsentGranted(settings)) log.info(USER_CONSENT_INITIAL, [settings.userConsent]);
|
|
@@ -51,7 +52,7 @@ export function createUserConsentAPI(params: ISdkFactoryContext) {
|
|
|
51
52
|
},
|
|
52
53
|
|
|
53
54
|
getStatus() {
|
|
54
|
-
return settings.userConsent
|
|
55
|
+
return settings.userConsent!;
|
|
55
56
|
},
|
|
56
57
|
|
|
57
58
|
Status: ConsentStatus
|
package/src/dtos/types.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { SplitIO } from '../types';
|
|
2
|
-
|
|
3
1
|
export type MaybeThenable<T> = T | Promise<T>
|
|
4
2
|
|
|
5
3
|
/** Split Matchers */
|
|
@@ -204,9 +202,3 @@ export interface IMetadata {
|
|
|
204
202
|
/** host name */
|
|
205
203
|
n: string
|
|
206
204
|
}
|
|
207
|
-
|
|
208
|
-
export type ISplitFiltersValidation = {
|
|
209
|
-
queryString: string | null,
|
|
210
|
-
groupedFilters: Record<SplitIO.SplitFilterType, string[]>,
|
|
211
|
-
validFilters: SplitIO.SplitFilter[]
|
|
212
|
-
};
|
package/src/evaluator/Engine.ts
CHANGED
|
@@ -5,10 +5,10 @@ import { thenable } from '../utils/promise/thenable';
|
|
|
5
5
|
import * as LabelsConstants from '../utils/labels';
|
|
6
6
|
import { CONTROL } from '../utils/constants';
|
|
7
7
|
import { ISplit, MaybeThenable } from '../dtos/types';
|
|
8
|
-
import {
|
|
8
|
+
import { SplitKey, Attributes } from '../types';
|
|
9
9
|
import { IStorageAsync, IStorageSync } from '../storages/types';
|
|
10
10
|
import { IEvaluation, IEvaluationResult, IEvaluator, ISplitEvaluator } from './types';
|
|
11
|
-
import { ILogger } from '../
|
|
11
|
+
import { ILogger } from '../types';
|
|
12
12
|
|
|
13
13
|
function evaluationResult(result: IEvaluation | undefined, defaultTreatment: string): IEvaluationResult {
|
|
14
14
|
return {
|
|
@@ -38,7 +38,7 @@ export class Engine {
|
|
|
38
38
|
return this.baseInfo.name;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
getTreatment(key:
|
|
41
|
+
getTreatment(key: SplitKey, attributes: Attributes | undefined, splitEvaluator: ISplitEvaluator): MaybeThenable<IEvaluationResult> {
|
|
42
42
|
const {
|
|
43
43
|
killed,
|
|
44
44
|
seed,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { findIndex } from '../../utils/lang';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { thenable } from '../../utils/promise/thenable';
|
|
4
4
|
import { MaybeThenable } from '../../dtos/types';
|
|
5
5
|
import { IMatcher } from '../types';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { findIndex } from '../../utils/lang';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { thenable } from '../../utils/promise/thenable';
|
|
4
4
|
import * as LabelsConstants from '../../utils/labels';
|
|
5
5
|
import { CONTROL } from '../../utils/constants';
|
|
6
|
-
import {
|
|
6
|
+
import { SplitKey, Attributes } from '../../types';
|
|
7
7
|
import { IEvaluation, IEvaluator, ISplitEvaluator } from '../types';
|
|
8
8
|
import { ENGINE_COMBINER_IFELSEIF, ENGINE_COMBINER_IFELSEIF_NO_TREATMENT, ERROR_ENGINE_COMBINER_IFELSEIF } from '../../logger/constants';
|
|
9
9
|
|
|
@@ -35,7 +35,7 @@ export function ifElseIfCombinerContext(log: ILogger, predicates: IEvaluator[]):
|
|
|
35
35
|
return undefined;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function ifElseIfCombiner(key:
|
|
38
|
+
function ifElseIfCombiner(key: SplitKey, seed: number, trafficAllocation?: number, trafficAllocationSeed?: number, attributes?: Attributes, splitEvaluator?: ISplitEvaluator) {
|
|
39
39
|
// In Async environments we are going to have async predicates. There is none way to know
|
|
40
40
|
// before hand so we need to evaluate all the predicates, verify for thenables, and finally,
|
|
41
41
|
// define how to return the treatment (wrap result into a Promise or not).
|
|
@@ -3,8 +3,8 @@ import { thenable } from '../../utils/promise/thenable';
|
|
|
3
3
|
import * as LabelsConstants from '../../utils/labels';
|
|
4
4
|
import { MaybeThenable } from '../../dtos/types';
|
|
5
5
|
import { IEvaluation, IEvaluator, ISplitEvaluator } from '../types';
|
|
6
|
-
import {
|
|
7
|
-
import { ILogger } from '../../
|
|
6
|
+
import { SplitKey, SplitKeyObject, Attributes } from '../../types';
|
|
7
|
+
import { ILogger } from '../../types';
|
|
8
8
|
|
|
9
9
|
// Build Evaluation object if and only if matchingResult is true
|
|
10
10
|
function match(log: ILogger, matchingResult: boolean, bucketingKey: string | undefined, seed: number, treatments: { getTreatmentFor: (x: number) => string }, label: string): IEvaluation | undefined {
|
|
@@ -24,10 +24,10 @@ function match(log: ILogger, matchingResult: boolean, bucketingKey: string | und
|
|
|
24
24
|
// Condition factory
|
|
25
25
|
export function conditionContext(log: ILogger, matcherEvaluator: (...args: any) => MaybeThenable<boolean>, treatments: { getTreatmentFor: (x: number) => string }, label: string, conditionType: 'ROLLOUT' | 'WHITELIST'): IEvaluator {
|
|
26
26
|
|
|
27
|
-
return function conditionEvaluator(key:
|
|
27
|
+
return function conditionEvaluator(key: SplitKey, seed: number, trafficAllocation?: number, trafficAllocationSeed?: number, attributes?: Attributes, splitEvaluator?: ISplitEvaluator) {
|
|
28
28
|
|
|
29
29
|
// Whitelisting has more priority than traffic allocation, so we don't apply this filtering to those conditions.
|
|
30
|
-
if (conditionType === 'ROLLOUT' && !shouldApplyRollout(trafficAllocation as number, (key as
|
|
30
|
+
if (conditionType === 'ROLLOUT' && !shouldApplyRollout(trafficAllocation as number, (key as SplitKeyObject).bucketingKey as string, trafficAllocationSeed as number)) {
|
|
31
31
|
return {
|
|
32
32
|
treatment: undefined, // treatment value is assigned later
|
|
33
33
|
label: LabelsConstants.NOT_IN_SPLIT
|
|
@@ -41,10 +41,10 @@ export function conditionContext(log: ILogger, matcherEvaluator: (...args: any)
|
|
|
41
41
|
const matches = matcherEvaluator(key, attributes, splitEvaluator);
|
|
42
42
|
|
|
43
43
|
if (thenable(matches)) {
|
|
44
|
-
return matches.then(result => match(log, result, (key as
|
|
44
|
+
return matches.then(result => match(log, result, (key as SplitKeyObject).bucketingKey, seed, treatments, label));
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
return match(log, matches, (key as
|
|
47
|
+
return match(log, matches, (key as SplitKeyObject).bucketingKey, seed, treatments, label);
|
|
48
48
|
};
|
|
49
49
|
|
|
50
50
|
}
|
package/src/evaluator/index.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { CONTROL } from '../utils/constants';
|
|
|
5
5
|
import { ISplit, MaybeThenable } from '../dtos/types';
|
|
6
6
|
import { IStorageAsync, IStorageSync } from '../storages/types';
|
|
7
7
|
import { IEvaluationResult } from './types';
|
|
8
|
-
import {
|
|
9
|
-
import { ILogger } from '../
|
|
8
|
+
import { SplitKey, Attributes } from '../types';
|
|
9
|
+
import { ILogger } from '../types';
|
|
10
10
|
|
|
11
11
|
const treatmentException = {
|
|
12
12
|
treatment: CONTROL,
|
|
@@ -24,9 +24,9 @@ function treatmentsException(splitNames: string[]) {
|
|
|
24
24
|
|
|
25
25
|
export function evaluateFeature(
|
|
26
26
|
log: ILogger,
|
|
27
|
-
key:
|
|
27
|
+
key: SplitKey,
|
|
28
28
|
splitName: string,
|
|
29
|
-
attributes:
|
|
29
|
+
attributes: Attributes | undefined,
|
|
30
30
|
storage: IStorageSync | IStorageAsync,
|
|
31
31
|
): MaybeThenable<IEvaluationResult> {
|
|
32
32
|
let stringifiedSplit;
|
|
@@ -63,9 +63,9 @@ export function evaluateFeature(
|
|
|
63
63
|
|
|
64
64
|
export function evaluateFeatures(
|
|
65
65
|
log: ILogger,
|
|
66
|
-
key:
|
|
66
|
+
key: SplitKey,
|
|
67
67
|
splitNames: string[],
|
|
68
|
-
attributes:
|
|
68
|
+
attributes: Attributes | undefined,
|
|
69
69
|
storage: IStorageSync | IStorageAsync,
|
|
70
70
|
): MaybeThenable<Record<string, IEvaluationResult>> {
|
|
71
71
|
let stringifiedSplits;
|
|
@@ -90,8 +90,8 @@ export function evaluateFeatures(
|
|
|
90
90
|
function getEvaluation(
|
|
91
91
|
log: ILogger,
|
|
92
92
|
stringifiedSplit: string | null,
|
|
93
|
-
key:
|
|
94
|
-
attributes:
|
|
93
|
+
key: SplitKey,
|
|
94
|
+
attributes: Attributes | undefined,
|
|
95
95
|
storage: IStorageSync | IStorageAsync,
|
|
96
96
|
): MaybeThenable<IEvaluationResult> {
|
|
97
97
|
let evaluation: MaybeThenable<IEvaluationResult> = {
|
|
@@ -126,8 +126,8 @@ function getEvaluations(
|
|
|
126
126
|
log: ILogger,
|
|
127
127
|
splitNames: string[],
|
|
128
128
|
splits: Record<string, string | null>,
|
|
129
|
-
key:
|
|
130
|
-
attributes:
|
|
129
|
+
key: SplitKey,
|
|
130
|
+
attributes: Attributes | undefined,
|
|
131
131
|
storage: IStorageSync | IStorageAsync,
|
|
132
132
|
): MaybeThenable<Record<string, IEvaluationResult>> {
|
|
133
133
|
const result: Record<string, IEvaluationResult> = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IBetweenMatcherData } from '../../dtos/types';
|
|
2
2
|
import { ENGINE_MATCHER_BETWEEN } from '../../logger/constants';
|
|
3
|
-
import { ILogger } from '../../
|
|
3
|
+
import { ILogger } from '../../types';
|
|
4
4
|
|
|
5
5
|
export function betweenMatcherContext(log: ILogger, ruleVO: IBetweenMatcherData) /*: Function */ {
|
|
6
6
|
return function betweenMatcher(runtimeAttr: number): boolean {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_BOOLEAN } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
|
|
4
4
|
export function booleanMatcherContext(log: ILogger, ruleAttr: boolean) /*: Function */ {
|
|
5
5
|
return function booleanMatcher(runtimeAttr: boolean): boolean {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_CONTAINS_ALL } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { findIndex } from '../../utils/lang';
|
|
4
4
|
|
|
5
5
|
export function containsAllSetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_CONTAINS_ANY } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { findIndex } from '../../utils/lang';
|
|
4
4
|
|
|
5
5
|
export function containsAnySetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isString } from '../../utils/lang';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { ENGINE_MATCHER_CONTAINS_STRING } from '../../logger/constants';
|
|
4
4
|
|
|
5
5
|
export function containsStringMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IDependencyMatcherData, MaybeThenable } from '../../dtos/types';
|
|
2
2
|
import { IStorageAsync, IStorageSync } from '../../storages/types';
|
|
3
|
-
import { ILogger } from '../../
|
|
3
|
+
import { ILogger } from '../../types';
|
|
4
4
|
import { thenable } from '../../utils/promise/thenable';
|
|
5
5
|
import { IDependencyMatcherValue, IEvaluation, ISplitEvaluator } from '../types';
|
|
6
6
|
import { ENGINE_MATCHER_DEPENDENCY, ENGINE_MATCHER_DEPENDENCY_PRE } from '../../logger/constants';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_EQUAL } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
|
|
4
4
|
export function equalToMatcherContext(log: ILogger, ruleAttr: number) /*: Function */ {
|
|
5
5
|
return function equalToMatcher(runtimeAttr: number): boolean {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_EQUAL_TO_SET } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { findIndex } from '../../utils/lang';
|
|
4
4
|
|
|
5
5
|
export function equalToSetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_ENDS_WITH } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { endsWith } from '../../utils/lang';
|
|
4
4
|
|
|
5
5
|
export function endsWithMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_GREATER } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
|
|
4
4
|
export function greaterThanEqualMatcherContext(log: ILogger, ruleAttr: number) /*: Function */ {
|
|
5
5
|
return function greaterThanEqualMatcher(runtimeAttr: number): boolean {
|
|
@@ -17,7 +17,7 @@ import { booleanMatcherContext } from './boolean';
|
|
|
17
17
|
import { stringMatcherContext } from './string';
|
|
18
18
|
import { IStorageAsync, IStorageSync } from '../../storages/types';
|
|
19
19
|
import { IMatcher, IMatcherDto } from '../types';
|
|
20
|
-
import { ILogger } from '../../
|
|
20
|
+
import { ILogger } from '../../types';
|
|
21
21
|
|
|
22
22
|
const matchers = [
|
|
23
23
|
undefined, // UNDEFINED: 0,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_LESS } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
|
|
4
4
|
export function lessThanEqualMatcherContext(log: ILogger, ruleAttr: number) /*: function */ {
|
|
5
5
|
return function lessThanEqualMatcher(runtimeAttr: number): boolean {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { findIndex } from '../../utils/lang';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { ENGINE_MATCHER_PART_OF } from '../../logger/constants';
|
|
4
4
|
|
|
5
5
|
export function partOfSetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MaybeThenable } from '../../dtos/types';
|
|
2
2
|
import { ISegmentsCacheBase } from '../../storages/types';
|
|
3
|
-
import { ILogger } from '../../
|
|
3
|
+
import { ILogger } from '../../types';
|
|
4
4
|
import { thenable } from '../../utils/promise/thenable';
|
|
5
5
|
import { ENGINE_MATCHER_SEGMENT } from '../../logger/constants';
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_STRING_INVALID, ENGINE_MATCHER_STRING } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
|
|
4
4
|
export function stringMatcherContext(log: ILogger, ruleAttr: string) /*: Function */ {
|
|
5
5
|
return function stringMatcher(runtimeAttr: string): boolean {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_STARTS_WITH } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { startsWith } from '../../utils/lang';
|
|
4
4
|
|
|
5
5
|
export function startsWithMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setToArray, ISet } from '../../utils/lang/sets';
|
|
2
|
-
import { ILogger } from '../../
|
|
2
|
+
import { ILogger } from '../../types';
|
|
3
3
|
import { ENGINE_MATCHER_WHITELIST } from '../../logger/constants';
|
|
4
4
|
|
|
5
5
|
export function whitelistMatcherContext(log: ILogger, ruleAttr: ISet<string>) /*: Function */ {
|
|
@@ -9,8 +9,8 @@ import { thenable } from '../../utils/promise/thenable';
|
|
|
9
9
|
import { IEvaluator, IMatcherDto, ISplitEvaluator } from '../types';
|
|
10
10
|
import { ISplitCondition } from '../../dtos/types';
|
|
11
11
|
import { IStorageAsync, IStorageSync } from '../../storages/types';
|
|
12
|
-
import {
|
|
13
|
-
import { ILogger } from '../../
|
|
12
|
+
import { Attributes } from '../../types';
|
|
13
|
+
import { ILogger } from '../../types';
|
|
14
14
|
|
|
15
15
|
export function parser(log: ILogger, conditions: ISplitCondition[], storage: IStorageSync | IStorageAsync): IEvaluator {
|
|
16
16
|
let predicates = [];
|
|
@@ -31,7 +31,7 @@ export function parser(log: ILogger, conditions: ISplitCondition[], storage: ISt
|
|
|
31
31
|
const matcher = matcherFactory(log, matcherDto, storage);
|
|
32
32
|
|
|
33
33
|
// Evaluator function.
|
|
34
|
-
return (key: string, attributes:
|
|
34
|
+
return (key: string, attributes: Attributes | undefined, splitEvaluator: ISplitEvaluator) => {
|
|
35
35
|
const value = sanitizeValue(log, key, matcherDto, attributes);
|
|
36
36
|
const result = value !== undefined && matcher ? matcher(value, splitEvaluator) : false;
|
|
37
37
|
|
package/src/evaluator/types.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { IBetweenMatcherData, IDependencyMatcherData, MaybeThenable } from '../dtos/types';
|
|
2
2
|
import { IStorageAsync, IStorageSync } from '../storages/types';
|
|
3
3
|
import { ISet } from '../utils/lang/sets';
|
|
4
|
-
import {
|
|
5
|
-
import { ILogger } from '../
|
|
4
|
+
import { SplitKey, Attributes } from '../types';
|
|
5
|
+
import { ILogger } from '../types';
|
|
6
6
|
|
|
7
7
|
export interface IDependencyMatcherValue {
|
|
8
|
-
key:
|
|
9
|
-
attributes?:
|
|
8
|
+
key: SplitKey,
|
|
9
|
+
attributes?: Attributes
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export interface IMatcherDto {
|
|
@@ -27,8 +27,8 @@ export interface IEvaluation {
|
|
|
27
27
|
|
|
28
28
|
export type IEvaluationResult = IEvaluation & { treatment: string }
|
|
29
29
|
|
|
30
|
-
export type ISplitEvaluator = (log: ILogger, key:
|
|
30
|
+
export type ISplitEvaluator = (log: ILogger, key: SplitKey, splitName: string, attributes: Attributes | undefined, storage: IStorageSync | IStorageAsync) => MaybeThenable<IEvaluation>
|
|
31
31
|
|
|
32
|
-
export type IEvaluator = (key:
|
|
32
|
+
export type IEvaluator = (key: SplitKey, seed: number, trafficAllocation?: number, trafficAllocationSeed?: number, attributes?: Attributes, splitEvaluator?: ISplitEvaluator) => MaybeThenable<IEvaluation | undefined>
|
|
33
33
|
|
|
34
34
|
export type IMatcher = (...args: any) => MaybeThenable<boolean>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Attributes } from '../../types';
|
|
2
2
|
import { IMatcherDto } from '../types';
|
|
3
|
-
import { ILogger } from '../../
|
|
3
|
+
import { ILogger } from '../../types';
|
|
4
4
|
import { sanitize } from './sanitize';
|
|
5
5
|
import { ENGINE_VALUE, ENGINE_VALUE_NO_ATTRIBUTES, ENGINE_VALUE_INVALID } from '../../logger/constants';
|
|
6
6
|
|
|
7
|
-
function parseValue(log: ILogger, key: string, attributeName: string | null, attributes?:
|
|
7
|
+
function parseValue(log: ILogger, key: string, attributeName: string | null, attributes?: Attributes) {
|
|
8
8
|
let value = undefined;
|
|
9
9
|
if (attributeName) {
|
|
10
10
|
if (attributes) {
|
|
@@ -23,7 +23,7 @@ function parseValue(log: ILogger, key: string, attributeName: string | null, att
|
|
|
23
23
|
/**
|
|
24
24
|
* Defines value to be matched (key / attribute).
|
|
25
25
|
*/
|
|
26
|
-
export function sanitizeValue(log: ILogger, key: string, matcherDto: IMatcherDto, attributes?:
|
|
26
|
+
export function sanitizeValue(log: ILogger, key: string, matcherDto: IMatcherDto, attributes?: Attributes) {
|
|
27
27
|
const attributeName = matcherDto.attribute;
|
|
28
28
|
const valueToMatch = parseValue(log, key, attributeName, attributes);
|
|
29
29
|
const sanitizedValue = sanitize(log, matcherDto.type, valueToMatch, matcherDto.dataType, attributes);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Attributes } from '../../types';
|
|
2
2
|
import { IDependencyMatcherValue } from '../types';
|
|
3
|
-
import { ILogger } from '../../
|
|
3
|
+
import { ILogger } from '../../types';
|
|
4
4
|
import { isObject, uniq, toString, toNumber } from '../../utils/lang';
|
|
5
5
|
import { zeroSinceHH, zeroSinceSS } from '../convertions';
|
|
6
6
|
import { matcherTypes, matcherDataTypes } from '../matchers/matcherTypes';
|
|
@@ -41,7 +41,7 @@ function sanitizeBoolean(val: any): boolean | undefined {
|
|
|
41
41
|
return undefined;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
function dependencyProcessor(sanitizedValue: string, attributes?:
|
|
44
|
+
function dependencyProcessor(sanitizedValue: string, attributes?: Attributes): IDependencyMatcherValue {
|
|
45
45
|
return {
|
|
46
46
|
key: sanitizedValue,
|
|
47
47
|
attributes
|
|
@@ -69,7 +69,7 @@ function getProcessingFunction(matcherTypeID: number, dataType: string) {
|
|
|
69
69
|
/**
|
|
70
70
|
* Sanitize matcher value
|
|
71
71
|
*/
|
|
72
|
-
export function sanitize(log: ILogger, matcherTypeID: number, value: string | number | boolean | Array<string | number> | undefined, dataType: string, attributes?:
|
|
72
|
+
export function sanitize(log: ILogger, matcherTypeID: number, value: string | number | boolean | Array<string | number> | undefined, dataType: string, attributes?: Attributes) {
|
|
73
73
|
const processor = getProcessingFunction(matcherTypeID, dataType);
|
|
74
74
|
let sanitizedValue: string | number | boolean | Array<string | number> | IDependencyMatcherValue | undefined;
|
|
75
75
|
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
validateKey,
|
|
9
9
|
validateTrafficType,
|
|
10
10
|
} from '../../utils/inputValidation';
|
|
11
|
-
import {
|
|
11
|
+
import { EventData } from '../../types';
|
|
12
12
|
import { Identity, GoogleAnalyticsToSplitOptions } from './types';
|
|
13
|
-
import { ILogger } from '../../
|
|
13
|
+
import { ILogger } from '../../types';
|
|
14
14
|
import { IIntegrationFactoryParams } from '../types';
|
|
15
15
|
|
|
16
16
|
const logPrefix = 'ga-to-split: ';
|
|
@@ -67,7 +67,7 @@ const defaultMapping = {
|
|
|
67
67
|
* @param {object} mapping
|
|
68
68
|
*/
|
|
69
69
|
function mapperBuilder(mapping: typeof defaultMapping) {
|
|
70
|
-
return function (model: UniversalAnalytics.Model):
|
|
70
|
+
return function (model: UniversalAnalytics.Model): EventData {
|
|
71
71
|
const hitType: string = model.get('hitType');
|
|
72
72
|
// @ts-expect-error
|
|
73
73
|
const eventTypeId = model.get(mapping.eventTypeId[hitType] || 'hitType');
|
|
@@ -133,7 +133,7 @@ export function validateIdentities(identities?: Identity[]) {
|
|
|
133
133
|
* @param {EventData} data event data instance to validate. Precondition: data != undefined
|
|
134
134
|
* @returns {boolean} Whether the data instance is a valid EventData or not.
|
|
135
135
|
*/
|
|
136
|
-
export function validateEventData(log: ILogger, eventData: any): eventData is
|
|
136
|
+
export function validateEventData(log: ILogger, eventData: any): eventData is EventData {
|
|
137
137
|
if (!validateEvent(log, eventData.eventTypeId, logNameMapper))
|
|
138
138
|
return false;
|
|
139
139
|
|
|
@@ -251,10 +251,10 @@ export function GaToSplit(sdkOptions: GoogleAnalyticsToSplitOptions, params: IIn
|
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
// map hit into an EventData instance
|
|
254
|
-
let eventData:
|
|
254
|
+
let eventData: EventData = defaultMapper(model);
|
|
255
255
|
if (opts.mapper) {
|
|
256
256
|
try {
|
|
257
|
-
eventData = opts.mapper(model, eventData as
|
|
257
|
+
eventData = opts.mapper(model, eventData as EventData);
|
|
258
258
|
} catch (err) {
|
|
259
259
|
log.warn(logPrefix + `custom mapper threw: ${err}`);
|
|
260
260
|
return;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* eslint-disable no-undef */
|
|
2
2
|
import { uniq } from '../../utils/lang';
|
|
3
3
|
import { SPLIT_IMPRESSION, SPLIT_EVENT } from '../../utils/constants';
|
|
4
|
-
import {
|
|
4
|
+
import { IntegrationData, ImpressionData, EventData } from '../../types';
|
|
5
5
|
import { IIntegration } from '../types';
|
|
6
6
|
import { SplitToGoogleAnalyticsOptions } from './types';
|
|
7
|
-
import { ILogger } from '../../
|
|
7
|
+
import { ILogger } from '../../types';
|
|
8
8
|
|
|
9
9
|
const logPrefix = 'split-to-ga: ';
|
|
10
10
|
const noGaWarning = '`ga` command queue not found.';
|
|
@@ -16,29 +16,29 @@ export class SplitToGa implements IIntegration {
|
|
|
16
16
|
static defaultTrackerNames = [''];
|
|
17
17
|
|
|
18
18
|
private trackerNames: string[];
|
|
19
|
-
private filter?: (data:
|
|
20
|
-
private mapper?: (data:
|
|
19
|
+
private filter?: (data: IntegrationData) => boolean;
|
|
20
|
+
private mapper?: (data: IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject;
|
|
21
21
|
private impressions: boolean | undefined;
|
|
22
22
|
private events: boolean | undefined;
|
|
23
23
|
private log: ILogger;
|
|
24
24
|
|
|
25
25
|
// Default mapper function.
|
|
26
|
-
static defaultMapper({ type, payload }:
|
|
26
|
+
static defaultMapper({ type, payload }: IntegrationData): UniversalAnalytics.FieldsObject {
|
|
27
27
|
switch (type) {
|
|
28
28
|
case SPLIT_IMPRESSION:
|
|
29
29
|
return {
|
|
30
30
|
hitType: 'event',
|
|
31
31
|
eventCategory: 'split-impression',
|
|
32
|
-
eventAction: 'Evaluate ' + (payload as
|
|
33
|
-
eventLabel: 'Treatment: ' + (payload as
|
|
32
|
+
eventAction: 'Evaluate ' + (payload as ImpressionData).impression.feature,
|
|
33
|
+
eventLabel: 'Treatment: ' + (payload as ImpressionData).impression.treatment + '. Targeting rule: ' + (payload as ImpressionData).impression.label + '.',
|
|
34
34
|
nonInteraction: true,
|
|
35
35
|
};
|
|
36
36
|
case SPLIT_EVENT:
|
|
37
37
|
return {
|
|
38
38
|
hitType: 'event',
|
|
39
39
|
eventCategory: 'split-event',
|
|
40
|
-
eventAction: (payload as
|
|
41
|
-
eventValue: (payload as
|
|
40
|
+
eventAction: (payload as EventData).eventTypeId,
|
|
41
|
+
eventValue: (payload as EventData).value,
|
|
42
42
|
nonInteraction: true,
|
|
43
43
|
};
|
|
44
44
|
}
|
|
@@ -93,7 +93,7 @@ export class SplitToGa implements IIntegration {
|
|
|
93
93
|
if (typeof SplitToGa.getGa() !== 'function') log.warn(logPrefix + `${noGaWarning} No hits will be sent until it is available.`);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
queue(data:
|
|
96
|
+
queue(data: IntegrationData) {
|
|
97
97
|
// access ga command queue via `getGa` method, accounting for the possibility that
|
|
98
98
|
// the global `ga` reference was not yet mutated by analytics.js.
|
|
99
99
|
const ga = SplitToGa.getGa();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IntegrationData, EventData } from '../../types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A pair of user key and it's trafficType, required for tracking valid Split events.
|
|
@@ -41,7 +41,7 @@ export interface GoogleAnalyticsToSplitOptions {
|
|
|
41
41
|
* return defaultMapping;
|
|
42
42
|
* }`
|
|
43
43
|
*/
|
|
44
|
-
mapper?: (model: UniversalAnalytics.Model, defaultMapping:
|
|
44
|
+
mapper?: (model: UniversalAnalytics.Model, defaultMapping: EventData) => EventData,
|
|
45
45
|
/**
|
|
46
46
|
* Optional prefix for EventTypeId, to prevent any kind of data collision between events.
|
|
47
47
|
* @property {string} prefix
|
|
@@ -97,7 +97,7 @@ export interface SplitToGoogleAnalyticsOptions {
|
|
|
97
97
|
* For example, the following filter allows to track only impressions, equivalent to setting events to false:
|
|
98
98
|
* `(data) => data.type === 'IMPRESSION'`
|
|
99
99
|
*/
|
|
100
|
-
filter?: (data:
|
|
100
|
+
filter?: (data: IntegrationData) => boolean,
|
|
101
101
|
/**
|
|
102
102
|
* Optional function useful when you need to modify the GA hit before sending it.
|
|
103
103
|
* This function is invoked with two arguments:
|
|
@@ -128,7 +128,7 @@ export interface SplitToGoogleAnalyticsOptions {
|
|
|
128
128
|
* nonInteraction: true,
|
|
129
129
|
* }`
|
|
130
130
|
*/
|
|
131
|
-
mapper?: (data:
|
|
131
|
+
mapper?: (data: IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject,
|
|
132
132
|
/**
|
|
133
133
|
* List of tracker names to send the hit. An empty string represents the default tracker.
|
|
134
134
|
* If not provided, hits are only sent to default tracker.
|