@splitsoftware/splitio-commons 1.6.2-rc.4 → 1.6.2-rc.7
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 +3 -0
- package/cjs/consent/sdkUserConsent.js +2 -2
- package/cjs/evaluator/index.js +10 -11
- package/cjs/integrations/ga/GaToSplit.js +8 -5
- package/cjs/listeners/browser.js +2 -1
- package/cjs/logger/constants.js +2 -1
- package/cjs/sdkClient/clientAttributesDecoration.js +1 -1
- package/cjs/sdkClient/sdkClient.js +3 -1
- package/cjs/sdkFactory/index.js +28 -8
- package/cjs/sdkManager/index.js +3 -11
- package/cjs/services/splitApi.js +20 -1
- package/cjs/storages/AbstractSplitsCacheAsync.js +7 -9
- package/cjs/storages/AbstractSplitsCacheSync.js +7 -9
- package/cjs/storages/KeyBuilderSS.js +6 -0
- package/cjs/storages/dataLoader.js +1 -1
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +5 -6
- package/cjs/storages/inLocalStorage/index.js +4 -0
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +12 -1
- package/cjs/storages/inMemory/InMemoryStorage.js +5 -1
- package/cjs/storages/inMemory/InMemoryStorageCS.js +5 -1
- package/cjs/storages/inMemory/SplitsCacheInMemory.js +7 -10
- package/cjs/storages/inMemory/uniqueKeysCacheInMemory.js +73 -0
- package/cjs/storages/inMemory/uniqueKeysCacheInMemoryCS.js +78 -0
- package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +49 -0
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +15 -9
- package/cjs/storages/inRedis/constants.js +4 -1
- package/cjs/storages/inRedis/index.js +15 -1
- package/cjs/storages/inRedis/uniqueKeysCacheInRedis.js +56 -0
- package/cjs/storages/pluggable/SplitsCachePluggable.js +14 -9
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +2 -3
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +1 -1
- package/cjs/sync/submitters/submitterManager.js +3 -0
- package/cjs/sync/submitters/telemetrySubmitter.js +1 -0
- package/cjs/sync/submitters/uniqueKeysSubmitter.js +26 -0
- package/cjs/trackers/impressionsTracker.js +22 -41
- package/cjs/trackers/strategy/strategyDebug.js +25 -0
- package/cjs/trackers/strategy/strategyNone.js +29 -0
- package/cjs/trackers/strategy/strategyOptimized.js +35 -0
- package/cjs/trackers/telemetryTracker.js +6 -0
- package/cjs/trackers/uniqueKeysTracker.js +38 -0
- package/cjs/types.js +2 -0
- package/cjs/utils/constants/index.js +4 -2
- package/cjs/utils/key/index.js +1 -1
- package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
- package/cjs/utils/settingsValidation/index.js +4 -1
- package/esm/consent/sdkUserConsent.js +2 -2
- package/esm/evaluator/index.js +10 -11
- package/esm/integrations/ga/GaToSplit.js +8 -5
- package/esm/listeners/browser.js +3 -2
- package/esm/logger/constants.js +1 -0
- package/esm/sdkClient/clientAttributesDecoration.js +1 -1
- package/esm/sdkClient/sdkClient.js +3 -1
- package/esm/sdkFactory/index.js +28 -8
- package/esm/sdkManager/index.js +3 -11
- package/esm/services/splitApi.js +20 -1
- package/esm/storages/AbstractSplitsCacheAsync.js +7 -9
- package/esm/storages/AbstractSplitsCacheSync.js +7 -9
- package/esm/storages/KeyBuilderSS.js +6 -0
- package/esm/storages/dataLoader.js +1 -1
- package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +5 -6
- package/esm/storages/inLocalStorage/index.js +5 -1
- package/esm/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +12 -1
- package/esm/storages/inMemory/InMemoryStorage.js +6 -2
- package/esm/storages/inMemory/InMemoryStorageCS.js +6 -2
- package/esm/storages/inMemory/SplitsCacheInMemory.js +7 -10
- package/esm/storages/inMemory/uniqueKeysCacheInMemory.js +70 -0
- package/esm/storages/inMemory/uniqueKeysCacheInMemoryCS.js +75 -0
- package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +46 -0
- package/esm/storages/inRedis/SplitsCacheInRedis.js +15 -9
- package/esm/storages/inRedis/constants.js +3 -0
- package/esm/storages/inRedis/index.js +16 -2
- package/esm/storages/inRedis/uniqueKeysCacheInRedis.js +53 -0
- package/esm/storages/pluggable/SplitsCachePluggable.js +14 -9
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +2 -3
- package/esm/sync/polling/updaters/splitChangesUpdater.js +1 -1
- package/esm/sync/submitters/submitterManager.js +3 -0
- package/esm/sync/submitters/telemetrySubmitter.js +2 -1
- package/esm/sync/submitters/uniqueKeysSubmitter.js +22 -0
- package/esm/trackers/impressionsTracker.js +22 -41
- package/esm/trackers/strategy/strategyDebug.js +21 -0
- package/esm/trackers/strategy/strategyNone.js +25 -0
- package/esm/trackers/strategy/strategyOptimized.js +31 -0
- package/esm/trackers/telemetryTracker.js +6 -0
- package/esm/trackers/uniqueKeysTracker.js +34 -0
- package/esm/types.js +1 -0
- package/esm/utils/constants/index.js +2 -0
- package/esm/utils/key/index.js +1 -1
- package/esm/utils/settingsValidation/impressionsMode.js +3 -3
- package/esm/utils/settingsValidation/index.js +4 -1
- package/package.json +5 -4
- package/src/consent/sdkUserConsent.ts +5 -6
- package/src/dtos/types.ts +8 -0
- 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 +18 -19
- 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 +15 -11
- 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 +4 -3
- package/src/listeners/browser.ts +3 -2
- package/src/logger/constants.ts +1 -0
- package/src/logger/index.ts +3 -3
- package/src/logger/sdkLogger.ts +2 -1
- package/src/logger/types.ts +16 -0
- package/src/readiness/sdkReadinessManager.ts +1 -1
- package/src/readiness/types.ts +9 -2
- package/src/sdkClient/client.ts +13 -13
- package/src/sdkClient/clientAttributesDecoration.ts +13 -13
- package/src/sdkClient/clientCS.ts +4 -3
- package/src/sdkClient/clientInputValidation.ts +15 -15
- package/src/sdkClient/sdkClient.ts +5 -3
- 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 +34 -11
- package/src/sdkFactory/types.ts +11 -8
- package/src/sdkManager/index.ts +7 -16
- package/src/services/splitApi.ts +22 -1
- package/src/services/types.ts +6 -0
- package/src/storages/AbstractSplitsCacheAsync.ts +12 -14
- package/src/storages/AbstractSplitsCacheSync.ts +14 -16
- package/src/storages/KeyBuilderSS.ts +8 -0
- package/src/storages/dataLoader.ts +3 -3
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +10 -12
- package/src/storages/inLocalStorage/index.ts +6 -4
- package/src/storages/inMemory/AttributesCacheInMemory.ts +12 -13
- package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
- package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +16 -1
- package/src/storages/inMemory/InMemoryStorage.ts +5 -2
- package/src/storages/inMemory/InMemoryStorageCS.ts +6 -2
- package/src/storages/inMemory/SplitsCacheInMemory.ts +10 -14
- package/src/storages/inMemory/uniqueKeysCacheInMemory.ts +82 -0
- package/src/storages/inMemory/uniqueKeysCacheInMemoryCS.ts +88 -0
- package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
- package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +51 -0
- 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 +22 -18
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
- package/src/storages/inRedis/constants.ts +3 -0
- package/src/storages/inRedis/index.ts +14 -6
- package/src/storages/inRedis/uniqueKeysCacheInRedis.ts +63 -0
- 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 +21 -18
- 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 +60 -62
- package/src/sync/offline/LocalhostFromObject.ts +4 -4
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +5 -6
- 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 +3 -3
- 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 +2 -0
- package/src/sync/submitters/telemetrySubmitter.ts +4 -3
- package/src/sync/submitters/types.ts +22 -3
- package/src/sync/submitters/uniqueKeysSubmitter.ts +35 -0
- package/src/sync/syncTask.ts +1 -1
- package/src/trackers/eventTracker.ts +3 -3
- package/src/trackers/impressionsTracker.ts +30 -51
- package/src/trackers/strategy/strategyDebug.ts +28 -0
- package/src/trackers/strategy/strategyNone.ts +34 -0
- package/src/trackers/strategy/strategyOptimized.ts +42 -0
- package/src/trackers/telemetryTracker.ts +7 -2
- package/src/trackers/types.ts +36 -4
- package/src/trackers/uniqueKeysTracker.ts +48 -0
- package/src/types.ts +1267 -0
- package/src/utils/constants/index.ts +3 -1
- 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 +2 -1
- package/src/utils/settingsValidation/impressionsMode.ts +6 -6
- package/src/utils/settingsValidation/index.ts +5 -1
- 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 +2 -1
- package/src/utils/settingsValidation/localhost/builtin.ts +2 -1
- package/src/utils/settingsValidation/localhost/pluggable.ts +2 -1
- package/src/utils/settingsValidation/logger/builtinLogger.ts +2 -1
- package/src/utils/settingsValidation/logger/pluggableLogger.ts +2 -1
- package/src/utils/settingsValidation/splitFilters.ts +9 -7
- package/src/utils/settingsValidation/storage/storageCS.ts +2 -1
- package/types/consent/index.d.ts +2 -0
- package/types/consent/sdkUserConsent.d.ts +13 -0
- package/types/dtos/types.d.ts +172 -0
- package/types/evaluator/Engine.d.ts +15 -0
- package/types/evaluator/combiners/and.d.ts +4 -0
- package/types/evaluator/combiners/ifelseif.d.ts +3 -0
- package/types/evaluator/condition/engineUtils.d.ts +11 -0
- package/types/evaluator/condition/index.d.ts +6 -0
- package/types/evaluator/convertions/index.d.ts +2 -0
- package/types/evaluator/index.d.ts +7 -0
- package/types/evaluator/matchers/all.d.ts +2 -0
- package/types/evaluator/matchers/between.d.ts +3 -0
- package/types/evaluator/matchers/boolean.d.ts +2 -0
- package/types/evaluator/matchers/cont_all.d.ts +2 -0
- package/types/evaluator/matchers/cont_any.d.ts +2 -0
- package/types/evaluator/matchers/cont_str.d.ts +2 -0
- package/types/evaluator/matchers/dependency.d.ts +5 -0
- package/types/evaluator/matchers/eq.d.ts +2 -0
- package/types/evaluator/matchers/eq_set.d.ts +2 -0
- package/types/evaluator/matchers/ew.d.ts +2 -0
- package/types/evaluator/matchers/gte.d.ts +2 -0
- package/types/evaluator/matchers/index.d.ts +7 -0
- package/types/evaluator/matchers/lte.d.ts +2 -0
- package/types/evaluator/matchers/matcherTypes.d.ts +10 -0
- package/types/evaluator/matchers/part_of.d.ts +2 -0
- package/types/evaluator/matchers/segment.d.ts +6 -0
- package/types/evaluator/matchers/string.d.ts +2 -0
- package/types/evaluator/matchers/sw.d.ts +2 -0
- package/types/evaluator/matchers/whitelist.d.ts +3 -0
- package/types/evaluator/matchersTransform/index.d.ts +6 -0
- package/types/evaluator/matchersTransform/segment.d.ts +5 -0
- package/types/evaluator/matchersTransform/set.d.ts +5 -0
- package/types/evaluator/matchersTransform/unaryNumeric.d.ts +5 -0
- package/types/evaluator/matchersTransform/whitelist.d.ts +5 -0
- package/types/evaluator/parser/index.d.ts +5 -0
- package/types/evaluator/treatments/index.d.ts +8 -0
- package/types/evaluator/types.d.ts +28 -0
- package/types/evaluator/value/index.d.ts +7 -0
- package/types/evaluator/value/sanitize.d.ts +7 -0
- package/types/index.d.ts +5 -0
- package/types/integrations/browser.d.ts +12 -0
- package/types/integrations/ga/GaToSplit.d.ts +40 -0
- package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +3 -0
- package/types/integrations/ga/SplitToGa.d.ts +34 -0
- package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +3 -0
- package/types/integrations/ga/types.d.ts +148 -0
- package/types/integrations/pluggable.d.ts +11 -0
- package/types/integrations/types.d.ts +18 -0
- package/types/listeners/browser.d.ts +40 -0
- package/types/listeners/node.d.ts +22 -0
- package/types/listeners/types.d.ts +4 -0
- package/types/logger/browser/DebugLogger.d.ts +2 -0
- package/types/logger/browser/ErrorLogger.d.ts +2 -0
- package/types/logger/browser/InfoLogger.d.ts +2 -0
- package/types/logger/browser/WarnLogger.d.ts +2 -0
- package/types/logger/constants.d.ts +142 -0
- package/types/logger/index.d.ts +22 -0
- package/types/logger/messages/debug.d.ts +1 -0
- package/types/logger/messages/error.d.ts +1 -0
- package/types/logger/messages/info.d.ts +1 -0
- package/types/logger/messages/warn.d.ts +1 -0
- package/types/logger/sdkLogger.d.ts +8 -0
- package/types/logger/types.d.ts +17 -0
- package/types/readiness/constants.d.ts +7 -0
- package/types/readiness/readinessManager.d.ts +6 -0
- package/types/readiness/sdkReadinessManager.d.ts +11 -0
- package/types/readiness/types.d.ts +60 -0
- package/types/sdkClient/client.d.ts +6 -0
- package/types/sdkClient/clientAttributesDecoration.d.ts +51 -0
- package/types/sdkClient/clientCS.d.ts +10 -0
- package/types/sdkClient/clientInputValidation.d.ts +7 -0
- package/types/sdkClient/sdkClient.d.ts +6 -0
- package/types/sdkClient/sdkClientMethod.d.ts +6 -0
- package/types/sdkClient/sdkClientMethodCS.d.ts +7 -0
- package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +8 -0
- package/types/sdkClient/types.d.ts +18 -0
- package/types/sdkFactory/index.d.ts +6 -0
- package/types/sdkFactory/types.d.ts +82 -0
- package/types/sdkManager/index.d.ts +5 -0
- package/types/services/splitApi.d.ts +11 -0
- package/types/services/splitHttpClient.d.ts +10 -0
- package/types/services/types.d.ts +54 -0
- package/types/storages/AbstractSegmentsCacheSync.d.ts +55 -0
- package/types/storages/AbstractSplitsCacheAsync.d.ts +37 -0
- package/types/storages/AbstractSplitsCacheSync.d.ts +42 -0
- package/types/storages/KeyBuilder.d.ts +14 -0
- package/types/storages/KeyBuilderCS.d.ts +16 -0
- package/types/storages/KeyBuilderSS.d.ts +17 -0
- package/types/storages/dataLoader.d.ts +10 -0
- package/types/storages/findLatencyIndex.d.ts +7 -0
- package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +25 -0
- package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +51 -0
- package/types/storages/inLocalStorage/constants.d.ts +2 -0
- package/types/storages/inLocalStorage/index.d.ts +8 -0
- package/types/storages/inMemory/AttributesCacheInMemory.d.ts +43 -0
- package/types/storages/inMemory/CountsCacheInMemory.d.ts +20 -0
- package/types/storages/inMemory/EventsCacheInMemory.d.ts +35 -0
- package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +28 -0
- package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +30 -0
- package/types/storages/inMemory/InMemoryStorage.d.ts +10 -0
- package/types/storages/inMemory/InMemoryStorageCS.d.ts +10 -0
- package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +20 -0
- package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +22 -0
- package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +19 -0
- package/types/storages/inMemory/SplitsCacheInMemory.d.ts +21 -0
- package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +53 -0
- package/types/storages/inMemory/uniqueKeysCacheInMemory.d.ts +35 -0
- package/types/storages/inMemory/uniqueKeysCacheInMemoryCS.d.ts +37 -0
- package/types/storages/inRedis/CountsCacheInRedis.d.ts +9 -0
- package/types/storages/inRedis/EventsCacheInRedis.d.ts +32 -0
- package/types/storages/inRedis/ImpressionCountsCacheInRedis.d.ts +14 -0
- package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +18 -0
- package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +9 -0
- package/types/storages/inRedis/RedisAdapter.d.ts +24 -0
- package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +18 -0
- package/types/storages/inRedis/SplitsCacheInRedis.d.ts +92 -0
- package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +20 -0
- package/types/storages/inRedis/constants.d.ts +4 -0
- package/types/storages/inRedis/index.d.ts +10 -0
- package/types/storages/inRedis/uniqueKeysCacheInRedis.d.ts +15 -0
- package/types/storages/metadataBuilder.d.ts +3 -0
- package/types/storages/pluggable/EventsCachePluggable.d.ts +38 -0
- package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +35 -0
- package/types/storages/pluggable/SegmentsCachePluggable.d.ts +54 -0
- package/types/storages/pluggable/SplitsCachePluggable.d.ts +90 -0
- package/types/storages/pluggable/TelemetryCachePluggable.d.ts +18 -0
- package/types/storages/pluggable/constants.d.ts +1 -0
- package/types/storages/pluggable/inMemoryWrapper.d.ts +13 -0
- package/types/storages/pluggable/index.d.ts +9 -0
- package/types/storages/pluggable/wrapperAdapter.d.ts +12 -0
- package/types/storages/types.d.ts +417 -0
- package/types/sync/offline/LocalhostFromFile.d.ts +2 -0
- package/types/sync/offline/LocalhostFromObject.d.ts +2 -0
- package/types/sync/offline/splitsParser/parseCondition.d.ts +7 -0
- package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +2 -0
- package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +3 -0
- package/types/sync/offline/splitsParser/types.d.ts +3 -0
- package/types/sync/offline/syncManagerOffline.d.ts +10 -0
- package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +17 -0
- package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +7 -0
- package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +7 -0
- package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +7 -0
- package/types/sync/polling/fetchers/types.d.ts +5 -0
- package/types/sync/polling/pollingManagerCS.d.ts +7 -0
- package/types/sync/polling/pollingManagerSS.d.ts +6 -0
- package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +9 -0
- package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +9 -0
- package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +9 -0
- package/types/sync/polling/types.d.ts +26 -0
- package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +13 -0
- package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +18 -0
- package/types/sync/polling/updaters/splitChangesUpdater.d.ts +39 -0
- package/types/sync/streaming/AuthClient/index.d.ts +12 -0
- package/types/sync/streaming/AuthClient/types.d.ts +17 -0
- package/types/sync/streaming/SSEClient/index.d.ts +34 -0
- package/types/sync/streaming/SSEClient/types.d.ts +11 -0
- package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +14 -0
- package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +20 -0
- package/types/sync/streaming/SSEHandler/index.d.ts +11 -0
- package/types/sync/streaming/SSEHandler/types.d.ts +67 -0
- package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +6 -0
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +8 -0
- package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +12 -0
- package/types/sync/streaming/UpdateWorkers/constants.d.ts +3 -0
- package/types/sync/streaming/UpdateWorkers/types.d.ts +4 -0
- package/types/sync/streaming/constants.d.ts +34 -0
- package/types/sync/streaming/mySegmentsV2utils.d.ts +27 -0
- package/types/sync/streaming/pushManager.d.ts +9 -0
- package/types/sync/streaming/types.d.ts +35 -0
- package/types/sync/submitters/eventsSubmitter.d.ts +5 -0
- package/types/sync/submitters/eventsSyncTask.d.ts +8 -0
- package/types/sync/submitters/impressionCountsSubmitter.d.ts +10 -0
- package/types/sync/submitters/impressionCountsSubmitterInRedis.d.ts +5 -0
- package/types/sync/submitters/impressionCountsSyncTask.d.ts +13 -0
- package/types/sync/submitters/impressionsSubmitter.d.ts +11 -0
- package/types/sync/submitters/impressionsSyncTask.d.ts +14 -0
- package/types/sync/submitters/metricsSyncTask.d.ts +12 -0
- package/types/sync/submitters/submitter.d.ts +12 -0
- package/types/sync/submitters/submitterManager.d.ts +3 -0
- package/types/sync/submitters/submitterSyncTask.d.ts +10 -0
- package/types/sync/submitters/telemetrySubmitter.d.ts +25 -0
- package/types/sync/submitters/types.d.ts +194 -0
- package/types/sync/submitters/uniqueKeysSubmitter.d.ts +5 -0
- package/types/sync/submitters/uniqueKeysSubmitterInRedis.d.ts +5 -0
- package/types/sync/syncManagerOnline.d.ts +13 -0
- package/types/sync/syncTask.d.ts +13 -0
- package/types/sync/syncTaskComposite.d.ts +5 -0
- package/types/sync/types.d.ts +43 -0
- package/types/trackers/eventTracker.d.ts +10 -0
- package/types/trackers/filter/bloomFilter.d.ts +10 -0
- package/types/trackers/filter/dictionaryFilter.d.ts +8 -0
- package/types/trackers/filter/types.d.ts +5 -0
- package/types/trackers/impressionObserver/ImpressionObserver.d.ts +8 -0
- package/types/trackers/impressionObserver/buildKey.d.ts +2 -0
- package/types/trackers/impressionObserver/impressionObserverCS.d.ts +4 -0
- package/types/trackers/impressionObserver/impressionObserverSS.d.ts +4 -0
- package/types/trackers/impressionObserver/types.d.ts +4 -0
- package/types/trackers/impressionObserver/utils.d.ts +13 -0
- package/types/trackers/impressionsTracker.d.ts +13 -0
- package/types/trackers/strategy/strategyDebug.d.ts +9 -0
- package/types/trackers/strategy/strategyNone.d.ts +10 -0
- package/types/trackers/strategy/strategyOptimized.d.ts +11 -0
- package/types/trackers/telemetryTracker.d.ts +3 -0
- package/types/trackers/types.d.ts +63 -0
- package/types/trackers/uniqueKeysTracker.d.ts +13 -0
- package/types/types.d.ts +1265 -0
- package/types/utils/Backoff.d.ts +25 -0
- package/types/utils/LRUCache/LinkedList.d.ts +34 -0
- package/types/utils/LRUCache/index.d.ts +16 -0
- package/types/utils/MinEventEmitter.d.ts +12 -0
- package/types/utils/MinEvents.d.ts +4 -0
- package/types/utils/base64/index.d.ts +30 -0
- package/types/utils/constants/browser.d.ts +3 -0
- package/types/utils/constants/index.d.ts +64 -0
- package/types/utils/decompress/index.d.ts +16 -0
- package/types/utils/env/isLocalStorageAvailable.d.ts +1 -0
- package/types/utils/env/isNode.d.ts +5 -0
- package/types/utils/inputValidation/apiKey.d.ts +7 -0
- package/types/utils/inputValidation/attribute.d.ts +2 -0
- package/types/utils/inputValidation/attributes.d.ts +4 -0
- package/types/utils/inputValidation/event.d.ts +2 -0
- package/types/utils/inputValidation/eventProperties.d.ts +6 -0
- package/types/utils/inputValidation/eventValue.d.ts +2 -0
- package/types/utils/inputValidation/index.d.ts +13 -0
- package/types/utils/inputValidation/isOperational.d.ts +4 -0
- package/types/utils/inputValidation/key.d.ts +3 -0
- package/types/utils/inputValidation/preloadedData.d.ts +3 -0
- package/types/utils/inputValidation/split.d.ts +2 -0
- package/types/utils/inputValidation/splitExistance.d.ts +7 -0
- package/types/utils/inputValidation/splits.d.ts +2 -0
- package/types/utils/inputValidation/trafficType.d.ts +2 -0
- package/types/utils/inputValidation/trafficTypeExistance.d.ts +9 -0
- package/types/utils/jwt/index.d.ts +5 -0
- package/types/utils/jwt/types.d.ts +5 -0
- package/types/utils/key/index.d.ts +8 -0
- package/types/utils/labels/index.d.ts +7 -0
- package/types/utils/lang/binarySearch.d.ts +9 -0
- package/types/utils/lang/getFnName.d.ts +4 -0
- package/types/utils/lang/getGlobal.d.ts +4 -0
- package/types/utils/lang/index.d.ts +105 -0
- package/types/utils/lang/maps.d.ts +55 -0
- package/types/utils/lang/objectAssign.d.ts +3 -0
- package/types/utils/lang/sets.d.ts +60 -0
- package/types/utils/murmur3/common.d.ts +12 -0
- package/types/utils/murmur3/legacy.d.ts +2 -0
- package/types/utils/murmur3/murmur3.d.ts +2 -0
- package/types/utils/murmur3/murmur3_128.d.ts +6 -0
- package/types/utils/murmur3/murmur3_128_x86.d.ts +7 -0
- package/types/utils/murmur3/murmur3_64.d.ts +10 -0
- package/types/utils/murmur3/utfx.d.ts +27 -0
- package/types/utils/promise/thenable.d.ts +1 -0
- package/types/utils/promise/timeout.d.ts +1 -0
- package/types/utils/promise/wrapper.d.ts +21 -0
- package/types/utils/settingsValidation/consent.d.ts +6 -0
- package/types/utils/settingsValidation/impressionsMode.d.ts +3 -0
- package/types/utils/settingsValidation/index.d.ts +52 -0
- package/types/utils/settingsValidation/integrations/common.d.ts +14 -0
- package/types/utils/settingsValidation/integrations/configurable.d.ts +13 -0
- package/types/utils/settingsValidation/integrations/pluggable.d.ts +13 -0
- package/types/utils/settingsValidation/localhost/builtin.d.ts +16 -0
- package/types/utils/settingsValidation/localhost/pluggable.d.ts +16 -0
- package/types/utils/settingsValidation/logger/builtinLogger.d.ts +10 -0
- package/types/utils/settingsValidation/logger/commons.d.ts +9 -0
- package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +11 -0
- package/types/utils/settingsValidation/mode.d.ts +1 -0
- package/types/utils/settingsValidation/runtime.d.ts +2 -0
- package/types/utils/settingsValidation/splitFilters.d.ts +16 -0
- package/types/utils/settingsValidation/storage/storageCS.d.ts +21 -0
- package/types/utils/settingsValidation/types.d.ts +32 -0
- package/types/utils/settingsValidation/url.d.ts +10 -0
- package/types/utils/time/index.d.ts +4 -0
- package/types/utils/timeTracker/index.d.ts +70 -0
- package/types/utils/timeTracker/now/browser.d.ts +1 -0
- package/types/utils/timeTracker/now/node.d.ts +1 -0
- package/types/utils/timeTracker/timer.d.ts +1 -0
- package/src/logger/.DS_Store +0 -0
- package/src/types.d.ts +0 -1581
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
|
|
2
2
|
import { KeyBuilder } from '../KeyBuilder';
|
|
3
3
|
import { IPluggableStorageWrapper } from '../types';
|
|
4
|
-
import { ILogger } from '../../types';
|
|
4
|
+
import { ILogger } from '../../logger/types';
|
|
5
5
|
import { ISplit } from '../../dtos/types';
|
|
6
6
|
import { LOG_PREFIX } from './constants';
|
|
7
7
|
import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
|
|
@@ -49,22 +49,22 @@ export class SplitsCachePluggable extends AbstractSplitsCacheAsync {
|
|
|
49
49
|
* The returned promise is resolved when the operation success
|
|
50
50
|
* or rejected if it fails (e.g., wrapper operation fails)
|
|
51
51
|
*/
|
|
52
|
-
addSplit(name: string, split:
|
|
52
|
+
addSplit(name: string, split: ISplit): Promise<boolean> {
|
|
53
53
|
const splitKey = this.keys.buildSplitKey(name);
|
|
54
54
|
return this.wrapper.get(splitKey).then(splitFromStorage => {
|
|
55
55
|
|
|
56
56
|
// handling parsing error
|
|
57
|
-
let parsedPreviousSplit,
|
|
57
|
+
let parsedPreviousSplit, stringifiedNewSplit;
|
|
58
58
|
try {
|
|
59
59
|
parsedPreviousSplit = splitFromStorage ? JSON.parse(splitFromStorage) : undefined;
|
|
60
|
-
|
|
60
|
+
stringifiedNewSplit = JSON.stringify(split);
|
|
61
61
|
} catch (e) {
|
|
62
62
|
throw new Error('Error parsing split definition: ' + e);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
return Promise.all([
|
|
66
|
-
this.wrapper.set(splitKey,
|
|
67
|
-
this._incrementCounts(
|
|
66
|
+
this.wrapper.set(splitKey, stringifiedNewSplit),
|
|
67
|
+
this._incrementCounts(split),
|
|
68
68
|
// If it's an update, we decrement the traffic type and segment count of the existing split,
|
|
69
69
|
parsedPreviousSplit && this._decrementCounts(parsedPreviousSplit)
|
|
70
70
|
]);
|
|
@@ -76,7 +76,7 @@ export class SplitsCachePluggable extends AbstractSplitsCacheAsync {
|
|
|
76
76
|
* The returned promise is resolved when the operation success
|
|
77
77
|
* or rejected if it fails (e.g., wrapper operation fails)
|
|
78
78
|
*/
|
|
79
|
-
addSplits(entries: [string,
|
|
79
|
+
addSplits(entries: [string, ISplit][]): Promise<boolean[]> {
|
|
80
80
|
return Promise.all(entries.map(keyValuePair => this.addSplit(keyValuePair[0], keyValuePair[1])));
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -88,8 +88,7 @@ export class SplitsCachePluggable extends AbstractSplitsCacheAsync {
|
|
|
88
88
|
removeSplit(name: string) {
|
|
89
89
|
return this.getSplit(name).then((split) => {
|
|
90
90
|
if (split) {
|
|
91
|
-
|
|
92
|
-
this._decrementCounts(parsedSplit);
|
|
91
|
+
this._decrementCounts(split);
|
|
93
92
|
}
|
|
94
93
|
return this.wrapper.del(this.keys.buildSplitKey(name));
|
|
95
94
|
});
|
|
@@ -109,8 +108,9 @@ export class SplitsCachePluggable extends AbstractSplitsCacheAsync {
|
|
|
109
108
|
* The returned promise is resolved with the split definition or null if it's not defined,
|
|
110
109
|
* or rejected if wrapper operation fails.
|
|
111
110
|
*/
|
|
112
|
-
getSplit(name: string): Promise<
|
|
113
|
-
return this.wrapper.get(this.keys.buildSplitKey(name))
|
|
111
|
+
getSplit(name: string): Promise<ISplit | null> {
|
|
112
|
+
return this.wrapper.get(this.keys.buildSplitKey(name))
|
|
113
|
+
.then(maybeSplit => maybeSplit && JSON.parse(maybeSplit));
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
@@ -118,13 +118,14 @@ export class SplitsCachePluggable extends AbstractSplitsCacheAsync {
|
|
|
118
118
|
* The returned promise is resolved with a map of split names to their split definition or null if it's not defined,
|
|
119
119
|
* or rejected if wrapper operation fails.
|
|
120
120
|
*/
|
|
121
|
-
getSplits(names: string[]): Promise<Record<string,
|
|
121
|
+
getSplits(names: string[]): Promise<Record<string, ISplit | null>> {
|
|
122
122
|
const keys = names.map(name => this.keys.buildSplitKey(name));
|
|
123
123
|
|
|
124
124
|
return this.wrapper.getMany(keys).then(splitDefinitions => {
|
|
125
|
-
const splits: Record<string,
|
|
125
|
+
const splits: Record<string, ISplit | null> = {};
|
|
126
126
|
names.forEach((name, idx) => {
|
|
127
|
-
|
|
127
|
+
const split = splitDefinitions[idx];
|
|
128
|
+
splits[name] = split && JSON.parse(split);
|
|
128
129
|
});
|
|
129
130
|
return Promise.resolve(splits);
|
|
130
131
|
});
|
|
@@ -135,10 +136,12 @@ export class SplitsCachePluggable extends AbstractSplitsCacheAsync {
|
|
|
135
136
|
* The returned promise is resolved with the list of split definitions,
|
|
136
137
|
* or rejected if wrapper operation fails.
|
|
137
138
|
*/
|
|
138
|
-
getAll(): Promise<
|
|
139
|
-
return this.wrapper.getKeysByPrefix(this.keys.buildSplitKeyPrefix())
|
|
140
|
-
(listOfKeys) =>
|
|
141
|
-
|
|
139
|
+
getAll(): Promise<ISplit[]> {
|
|
140
|
+
return this.wrapper.getKeysByPrefix(this.keys.buildSplitKeyPrefix())
|
|
141
|
+
.then((listOfKeys) => this.wrapper.getMany(listOfKeys))
|
|
142
|
+
.then((splitDefinitions) => splitDefinitions.map((splitDefinition) => {
|
|
143
|
+
return JSON.parse(splitDefinition as string);
|
|
144
|
+
}));
|
|
142
145
|
}
|
|
143
146
|
|
|
144
147
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IPluggableStorageWrapper, IStorageAsync, IStorageFactoryParams } from '../types';
|
|
2
|
-
|
|
1
|
+
import { IPluggableStorageWrapper, IStorageAsync, IStorageAsyncFactory, IStorageFactoryParams } from '../types';
|
|
2
|
+
|
|
3
3
|
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
4
4
|
import { SplitsCachePluggable } from './SplitsCachePluggable';
|
|
5
5
|
import { SegmentsCachePluggable } from './SegmentsCachePluggable';
|
|
@@ -58,7 +58,7 @@ function promisifyEventsTrack(events: any) {
|
|
|
58
58
|
/**
|
|
59
59
|
* Pluggable storage factory for consumer server-side & client-side SplitFactory.
|
|
60
60
|
*/
|
|
61
|
-
export function PluggableStorage(options: PluggableStorageOptions):
|
|
61
|
+
export function PluggableStorage(options: PluggableStorageOptions): IStorageAsyncFactory {
|
|
62
62
|
|
|
63
63
|
validatePluggableStorageOptions(options);
|
|
64
64
|
|
package/src/storages/types.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { MaybeThenable, IMetadata } from '../dtos/types';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { MaybeThenable, IMetadata, ISplitFiltersValidation, ISplit } from '../dtos/types';
|
|
2
|
+
import { ILogger } from '../logger/types';
|
|
3
|
+
import { EventDataType, HttpErrors, HttpLatencies, ImpressionDataType, LastSync, Method, MethodExceptions, MethodLatencies, OperationType, StoredEventWithMetadata, StoredImpressionWithMetadata, StreamingEvent, UniqueKeysPayloadCs, UniqueKeysPayloadSs } from '../sync/submitters/types';
|
|
4
|
+
import { SplitIO, ImpressionDTO, SDKMode } from '../types';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Interface of a pluggable storage wrapper.
|
|
@@ -190,14 +191,14 @@ export interface IPluggableStorageWrapper {
|
|
|
190
191
|
/** Splits cache */
|
|
191
192
|
|
|
192
193
|
export interface ISplitsCacheBase {
|
|
193
|
-
addSplits(entries: [string,
|
|
194
|
+
addSplits(entries: [string, ISplit][]): MaybeThenable<boolean[] | void>,
|
|
194
195
|
removeSplits(names: string[]): MaybeThenable<boolean[] | void>,
|
|
195
|
-
getSplit(name: string): MaybeThenable<
|
|
196
|
-
getSplits(names: string[]): MaybeThenable<Record<string,
|
|
196
|
+
getSplit(name: string): MaybeThenable<ISplit | null>,
|
|
197
|
+
getSplits(names: string[]): MaybeThenable<Record<string, ISplit | null>>, // `fetchMany` in spec
|
|
197
198
|
setChangeNumber(changeNumber: number): MaybeThenable<boolean | void>,
|
|
198
199
|
// should never reject or throw an exception. Instead return -1 by default, assuming no splits are present in the storage.
|
|
199
200
|
getChangeNumber(): MaybeThenable<number>,
|
|
200
|
-
getAll(): MaybeThenable<
|
|
201
|
+
getAll(): MaybeThenable<ISplit[]>,
|
|
201
202
|
getSplitNames(): MaybeThenable<string[]>,
|
|
202
203
|
// should never reject or throw an exception. Instead return true by default, asssuming the TT might exist.
|
|
203
204
|
trafficTypeExists(trafficType: string): MaybeThenable<boolean>,
|
|
@@ -210,13 +211,13 @@ export interface ISplitsCacheBase {
|
|
|
210
211
|
}
|
|
211
212
|
|
|
212
213
|
export interface ISplitsCacheSync extends ISplitsCacheBase {
|
|
213
|
-
addSplits(entries: [string,
|
|
214
|
+
addSplits(entries: [string, ISplit][]): boolean[],
|
|
214
215
|
removeSplits(names: string[]): boolean[],
|
|
215
|
-
getSplit(name: string):
|
|
216
|
-
getSplits(names: string[]): Record<string,
|
|
216
|
+
getSplit(name: string): ISplit | null,
|
|
217
|
+
getSplits(names: string[]): Record<string, ISplit | null>,
|
|
217
218
|
setChangeNumber(changeNumber: number): boolean,
|
|
218
219
|
getChangeNumber(): number,
|
|
219
|
-
getAll():
|
|
220
|
+
getAll(): ISplit[],
|
|
220
221
|
getSplitNames(): string[],
|
|
221
222
|
trafficTypeExists(trafficType: string): boolean,
|
|
222
223
|
usesSegments(): boolean,
|
|
@@ -226,13 +227,13 @@ export interface ISplitsCacheSync extends ISplitsCacheBase {
|
|
|
226
227
|
}
|
|
227
228
|
|
|
228
229
|
export interface ISplitsCacheAsync extends ISplitsCacheBase {
|
|
229
|
-
addSplits(entries: [string,
|
|
230
|
+
addSplits(entries: [string, ISplit][]): Promise<boolean[] | void>,
|
|
230
231
|
removeSplits(names: string[]): Promise<boolean[] | void>,
|
|
231
|
-
getSplit(name: string): Promise<
|
|
232
|
-
getSplits(names: string[]): Promise<Record<string,
|
|
232
|
+
getSplit(name: string): Promise<ISplit | null>,
|
|
233
|
+
getSplits(names: string[]): Promise<Record<string, ISplit | null>>,
|
|
233
234
|
setChangeNumber(changeNumber: number): Promise<boolean | void>,
|
|
234
235
|
getChangeNumber(): Promise<number>,
|
|
235
|
-
getAll(): Promise<
|
|
236
|
+
getAll(): Promise<ISplit[]>,
|
|
236
237
|
getSplitNames(): Promise<string[]>,
|
|
237
238
|
trafficTypeExists(trafficType: string): Promise<boolean>,
|
|
238
239
|
usesSegments(): Promise<boolean>,
|
|
@@ -288,7 +289,7 @@ export interface IImpressionsCacheBase {
|
|
|
288
289
|
|
|
289
290
|
export interface IEventsCacheBase {
|
|
290
291
|
// Consumer API method, used by events tracker, in standalone and consumer modes, to push events into the storage.
|
|
291
|
-
track(data: EventData, size?: number): MaybeThenable<boolean>
|
|
292
|
+
track(data: SplitIO.EventData, size?: number): MaybeThenable<boolean>
|
|
292
293
|
}
|
|
293
294
|
|
|
294
295
|
/** Impressions and events cache for standalone mode (sync) */
|
|
@@ -311,8 +312,8 @@ export interface IImpressionsCacheSync extends IImpressionsCacheBase, IRecorderC
|
|
|
311
312
|
setOnFullQueueCb(cb: () => void): void
|
|
312
313
|
}
|
|
313
314
|
|
|
314
|
-
export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<EventData[]> {
|
|
315
|
-
track(data: EventData, size?: number): boolean
|
|
315
|
+
export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<SplitIO.EventData[]> {
|
|
316
|
+
track(data: SplitIO.EventData, size?: number): boolean
|
|
316
317
|
/* Registers callback for full queue */
|
|
317
318
|
setOnFullQueueCb(cb: () => void): void
|
|
318
319
|
}
|
|
@@ -338,7 +339,7 @@ export interface IImpressionsCacheAsync extends IImpressionsCacheBase, IRecorder
|
|
|
338
339
|
export interface IEventsCacheAsync extends IEventsCacheBase, IRecorderCacheProducerAsync<StoredEventWithMetadata[]> {
|
|
339
340
|
// Consumer API method, used by events tracker (in standalone and consumer modes) to push data into.
|
|
340
341
|
// The result promise cannot reject.
|
|
341
|
-
track(data: EventData, size?: number): Promise<boolean>
|
|
342
|
+
track(data: SplitIO.EventData, size?: number): Promise<boolean>
|
|
342
343
|
}
|
|
343
344
|
|
|
344
345
|
/**
|
|
@@ -346,14 +347,25 @@ export interface IEventsCacheAsync extends IEventsCacheBase, IRecorderCacheProdu
|
|
|
346
347
|
* Only in memory. Named `ImpressionsCounter` in spec.
|
|
347
348
|
*/
|
|
348
349
|
export interface IImpressionCountsCacheSync extends IRecorderCacheProducerSync<Record<string, number>> {
|
|
349
|
-
|
|
350
|
+
// Used by impressions tracker
|
|
350
351
|
track(featureName: string, timeFrame: number, amount: number): void
|
|
351
352
|
|
|
352
353
|
// Used by impressions count submitter in standalone and producer mode
|
|
353
354
|
isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
|
|
354
|
-
pop(toMerge?: Record<string, number>): Record<string, number> // pop cache data
|
|
355
|
+
pop(toMerge?: Record<string, number> ): Record<string, number> // pop cache data
|
|
355
356
|
}
|
|
356
357
|
|
|
358
|
+
export interface IUniqueKeysCacheBase {
|
|
359
|
+
// Used by unique Keys tracker
|
|
360
|
+
track(key: string, value: string): void
|
|
361
|
+
|
|
362
|
+
// Used by unique keys submitter in standalone and producer mode
|
|
363
|
+
isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
|
|
364
|
+
pop(): UniqueKeysPayloadSs | UniqueKeysPayloadCs // pop cache data
|
|
365
|
+
/* Registers callback for full queue */
|
|
366
|
+
setOnFullQueueCb(cb: () => void): void,
|
|
367
|
+
clear(): void
|
|
368
|
+
}
|
|
357
369
|
|
|
358
370
|
/**
|
|
359
371
|
* Telemetry storage interface for standalone and partial consumer modes.
|
|
@@ -443,15 +455,18 @@ export interface IStorageBase<
|
|
|
443
455
|
TSplitsCache extends ISplitsCacheBase,
|
|
444
456
|
TSegmentsCache extends ISegmentsCacheBase,
|
|
445
457
|
TImpressionsCache extends IImpressionsCacheBase,
|
|
458
|
+
TImpressionsCountCache extends IImpressionCountsCacheSync,
|
|
446
459
|
TEventsCache extends IEventsCacheBase,
|
|
447
|
-
TTelemetryCache extends ITelemetryCacheSync | ITelemetryCacheAsync
|
|
460
|
+
TTelemetryCache extends ITelemetryCacheSync | ITelemetryCacheAsync,
|
|
461
|
+
TUniqueKeysCache extends IUniqueKeysCacheBase
|
|
448
462
|
> {
|
|
449
463
|
splits: TSplitsCache,
|
|
450
464
|
segments: TSegmentsCache,
|
|
451
465
|
impressions: TImpressionsCache,
|
|
452
|
-
impressionCounts?:
|
|
466
|
+
impressionCounts?: TImpressionsCountCache,
|
|
453
467
|
events: TEventsCache,
|
|
454
|
-
telemetry?: TTelemetryCache
|
|
468
|
+
telemetry?: TTelemetryCache,
|
|
469
|
+
uniqueKeys?: TUniqueKeysCache,
|
|
455
470
|
destroy(): void | Promise<void>,
|
|
456
471
|
shared?: (matchingKey: string, onReadyCb: (error?: any) => void) => this
|
|
457
472
|
}
|
|
@@ -460,16 +475,20 @@ export interface IStorageSync extends IStorageBase<
|
|
|
460
475
|
ISplitsCacheSync,
|
|
461
476
|
ISegmentsCacheSync,
|
|
462
477
|
IImpressionsCacheSync,
|
|
478
|
+
IImpressionCountsCacheSync,
|
|
463
479
|
IEventsCacheSync,
|
|
464
|
-
ITelemetryCacheSync
|
|
480
|
+
ITelemetryCacheSync,
|
|
481
|
+
IUniqueKeysCacheBase
|
|
465
482
|
> { }
|
|
466
483
|
|
|
467
484
|
export interface IStorageAsync extends IStorageBase<
|
|
468
485
|
ISplitsCacheAsync,
|
|
469
486
|
ISegmentsCacheAsync,
|
|
470
487
|
IImpressionsCacheAsync | IImpressionsCacheSync,
|
|
488
|
+
IImpressionCountsCacheSync,
|
|
471
489
|
IEventsCacheAsync | IEventsCacheSync,
|
|
472
|
-
ITelemetryCacheAsync
|
|
490
|
+
ITelemetryCacheAsync,
|
|
491
|
+
IUniqueKeysCacheBase
|
|
473
492
|
> { }
|
|
474
493
|
|
|
475
494
|
/** StorageFactory */
|
|
@@ -479,10 +498,14 @@ export type DataLoader = (storage: IStorageSync, matchingKey: string) => void
|
|
|
479
498
|
export interface IStorageFactoryParams {
|
|
480
499
|
log: ILogger,
|
|
481
500
|
impressionsQueueSize?: number,
|
|
501
|
+
impressionCountsQueueSize?: number,
|
|
502
|
+
impressionCountsRefreshRate?: number,
|
|
503
|
+
uniqueKeysRefreshRate?: number,
|
|
504
|
+
uniqueKeysCacheSize?: number,
|
|
482
505
|
eventsQueueSize?: number,
|
|
483
506
|
optimize?: boolean /* whether create the `impressionCounts` cache (OPTIMIZED impression mode) or not (DEBUG impression mode) */,
|
|
484
507
|
mode: SDKMode,
|
|
485
|
-
|
|
508
|
+
impressionsMode?: string,
|
|
486
509
|
// ATM, only used by InLocalStorage
|
|
487
510
|
matchingKey?: string, /* undefined on server-side SDKs */
|
|
488
511
|
splitFiltersValidation?: ISplitFiltersValidation,
|
|
@@ -494,39 +517,14 @@ export interface IStorageFactoryParams {
|
|
|
494
517
|
metadata: IMetadata,
|
|
495
518
|
}
|
|
496
519
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
/**
|
|
508
|
-
* Change number of the preloaded data.
|
|
509
|
-
* If this value is older than the current changeNumber at the storage, the data is not used to update the storage content.
|
|
510
|
-
*/
|
|
511
|
-
since: number,
|
|
512
|
-
/**
|
|
513
|
-
* Map of splits to their serialized definitions.
|
|
514
|
-
*/
|
|
515
|
-
splitsData: {
|
|
516
|
-
[splitName: string]: string
|
|
517
|
-
},
|
|
518
|
-
/**
|
|
519
|
-
* Optional map of user keys to their list of segments.
|
|
520
|
-
* @TODO remove when releasing first version
|
|
521
|
-
*/
|
|
522
|
-
mySegmentsData?: {
|
|
523
|
-
[key: string]: string[]
|
|
524
|
-
},
|
|
525
|
-
/**
|
|
526
|
-
* Optional map of segments to their serialized definitions.
|
|
527
|
-
* This property is ignored if `mySegmentsData` was provided.
|
|
528
|
-
*/
|
|
529
|
-
segmentsData?: {
|
|
530
|
-
[segmentName: string]: string
|
|
531
|
-
},
|
|
520
|
+
export type StorageType = 'MEMORY' | 'LOCALSTORAGE' | 'REDIS' | 'PLUGGABLE';
|
|
521
|
+
|
|
522
|
+
export type IStorageSyncFactory = {
|
|
523
|
+
readonly type: StorageType,
|
|
524
|
+
(params: IStorageFactoryParams): IStorageSync
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
export type IStorageAsyncFactory = {
|
|
528
|
+
type: StorageType,
|
|
529
|
+
(params: IStorageFactoryParams): IStorageAsync
|
|
532
530
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { splitsParserFromSettingsFactory } from './splitsParser/splitsParserFromSettings';
|
|
2
2
|
import { syncManagerOfflineFactory } from './syncManagerOffline';
|
|
3
|
-
import {
|
|
3
|
+
import { SplitIO } from '../../types';
|
|
4
4
|
|
|
5
5
|
// Singleton instance of the factory function for offline SyncManager from object (a.k.a. localhostFromObject)
|
|
6
6
|
// SDK instances instantiate their SyncManagers with the same factory
|
|
7
|
-
const localhostFromObject
|
|
7
|
+
const localhostFromObject = syncManagerOfflineFactory(splitsParserFromSettingsFactory) as SplitIO.LocalhostFactory;
|
|
8
8
|
localhostFromObject.type = 'LocalhostFromObject';
|
|
9
9
|
|
|
10
|
-
export function LocalhostFromObject() {
|
|
11
|
-
return localhostFromObject
|
|
10
|
+
export function LocalhostFromObject(): SplitIO.LocalhostFactory {
|
|
11
|
+
return localhostFromObject;
|
|
12
12
|
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { ISplitPartial } from '../../../dtos/types';
|
|
2
|
-
import { ISettings,
|
|
2
|
+
import { ISettings, SplitIO } from '../../../types';
|
|
3
3
|
import { isObject, forOwn } from '../../../utils/lang';
|
|
4
4
|
import { parseCondition } from './parseCondition';
|
|
5
5
|
|
|
6
|
-
function hasTreatmentChanged(prev: string | TreatmentWithConfig, curr: string | TreatmentWithConfig) {
|
|
6
|
+
function hasTreatmentChanged(prev: string | SplitIO.TreatmentWithConfig, curr: string | SplitIO.TreatmentWithConfig) {
|
|
7
7
|
if (typeof prev !== typeof curr) return true;
|
|
8
8
|
|
|
9
9
|
if (typeof prev === 'string') { // strings treatments, just compare
|
|
10
10
|
return prev !== curr;
|
|
11
11
|
} else { // has treatment and config, compare both
|
|
12
|
-
return prev.treatment !== (curr as TreatmentWithConfig).treatment || prev.config !== (curr as TreatmentWithConfig).config;
|
|
12
|
+
return prev.treatment !== (curr as SplitIO.TreatmentWithConfig).treatment || prev.config !== (curr as SplitIO.TreatmentWithConfig).config;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export function splitsParserFromSettingsFactory() {
|
|
17
17
|
|
|
18
|
-
let previousMock: MockedFeaturesMap = { 'emptyMock': '1' };
|
|
18
|
+
let previousMock: SplitIO.MockedFeaturesMap = { 'emptyMock': '1' };
|
|
19
19
|
|
|
20
|
-
function mockUpdated(currentData: MockedFeaturesMap) {
|
|
20
|
+
function mockUpdated(currentData: SplitIO.MockedFeaturesMap) {
|
|
21
21
|
const names = Object.keys(currentData);
|
|
22
22
|
|
|
23
23
|
// Different amount of items
|
|
@@ -42,7 +42,7 @@ export function splitsParserFromSettingsFactory() {
|
|
|
42
42
|
* @param settings validated object with mocked features mapping.
|
|
43
43
|
*/
|
|
44
44
|
return function splitsParserFromSettings(settings: ISettings): false | Record<string, ISplitPartial> {
|
|
45
|
-
const features = settings.features as MockedFeaturesMap || {};
|
|
45
|
+
const features = settings.features as SplitIO.MockedFeaturesMap || {};
|
|
46
46
|
|
|
47
47
|
if (!mockUpdated(features)) return false;
|
|
48
48
|
|
|
@@ -53,8 +53,8 @@ export function splitsParserFromSettingsFactory() {
|
|
|
53
53
|
let config = null;
|
|
54
54
|
|
|
55
55
|
if (isObject(data)) {
|
|
56
|
-
treatment = (data as TreatmentWithConfig).treatment;
|
|
57
|
-
config = (data as TreatmentWithConfig).config || config;
|
|
56
|
+
treatment = (data as SplitIO.TreatmentWithConfig).treatment;
|
|
57
|
+
config = (data as SplitIO.TreatmentWithConfig).config || config;
|
|
58
58
|
}
|
|
59
59
|
const configurations: Record<string, string> = {};
|
|
60
60
|
if (config !== null) configurations[treatment as string] = config;
|
|
@@ -2,7 +2,7 @@ import { forOwn } from '../../../utils/lang';
|
|
|
2
2
|
import { IReadinessManager } from '../../../readiness/types';
|
|
3
3
|
import { ISplitsCacheSync } from '../../../storages/types';
|
|
4
4
|
import { ISplitsParser } from '../splitsParser/types';
|
|
5
|
-
import { ISplitPartial } from '../../../dtos/types';
|
|
5
|
+
import { ISplit, ISplitPartial } from '../../../dtos/types';
|
|
6
6
|
import { syncTaskFactory } from '../../syncTask';
|
|
7
7
|
import { ISyncTask } from '../../types';
|
|
8
8
|
import { ISettings } from '../../../types';
|
|
@@ -24,7 +24,7 @@ export function fromObjectUpdaterFactory(
|
|
|
24
24
|
let startingUp = true;
|
|
25
25
|
|
|
26
26
|
return function objectUpdater() {
|
|
27
|
-
const splits: [string,
|
|
27
|
+
const splits: [string, ISplit][] = [];
|
|
28
28
|
let loadError = null;
|
|
29
29
|
let splitsMock: false | Record<string, ISplitPartial> = {};
|
|
30
30
|
try {
|
|
@@ -38,9 +38,8 @@ export function fromObjectUpdaterFactory(
|
|
|
38
38
|
log.debug(SYNC_OFFLINE_DATA, [JSON.stringify(splitsMock)]);
|
|
39
39
|
|
|
40
40
|
forOwn(splitsMock, function (val, name) {
|
|
41
|
-
splits.push([
|
|
42
|
-
name,
|
|
43
|
-
JSON.stringify({
|
|
41
|
+
splits.push([ // @ts-ignore Split changeNumber and seed is undefined in localhost mode
|
|
42
|
+
name, {
|
|
44
43
|
name,
|
|
45
44
|
status: 'ACTIVE',
|
|
46
45
|
killed: false,
|
|
@@ -49,7 +48,7 @@ export function fromObjectUpdaterFactory(
|
|
|
49
48
|
conditions: val.conditions || [],
|
|
50
49
|
configurations: val.configurations,
|
|
51
50
|
trafficTypeName: val.trafficTypeName
|
|
52
|
-
}
|
|
51
|
+
}
|
|
53
52
|
]);
|
|
54
53
|
});
|
|
55
54
|
|
|
@@ -3,7 +3,7 @@ import { ISegmentsCacheSync, ISplitsCacheSync } from '../../../storages/types';
|
|
|
3
3
|
import { ISegmentsEventEmitter } from '../../../readiness/types';
|
|
4
4
|
import { timeout } from '../../../utils/promise/timeout';
|
|
5
5
|
import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
6
|
-
import { ILogger } from '../../../types';
|
|
6
|
+
import { ILogger } from '../../../logger/types';
|
|
7
7
|
import { SYNC_MYSEGMENTS_FETCH_RETRY } from '../../../logger/constants';
|
|
8
8
|
import { MySegmentsData } from '../types';
|
|
9
9
|
|
|
@@ -4,7 +4,7 @@ import { IReadinessManager } from '../../../readiness/types';
|
|
|
4
4
|
import { MaybeThenable } from '../../../dtos/types';
|
|
5
5
|
import { findIndex } from '../../../utils/lang';
|
|
6
6
|
import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
|
|
7
|
-
import { ILogger } from '../../../types';
|
|
7
|
+
import { ILogger } from '../../../logger/types';
|
|
8
8
|
import { LOG_PREFIX_INSTANTIATION, LOG_PREFIX_SYNC_SEGMENTS } from '../../../logger/constants';
|
|
9
9
|
import { thenable } from '../../../utils/promise/thenable';
|
|
10
10
|
|
|
@@ -5,7 +5,7 @@ import { ISplit, ISplitChangesResponse } from '../../../dtos/types';
|
|
|
5
5
|
import { ISplitsEventEmitter } from '../../../readiness/types';
|
|
6
6
|
import { timeout } from '../../../utils/promise/timeout';
|
|
7
7
|
import { SDK_SPLITS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../../../readiness/constants';
|
|
8
|
-
import { ILogger } from '../../../types';
|
|
8
|
+
import { ILogger } from '../../../logger/types';
|
|
9
9
|
import { SYNC_SPLITS_FETCH, SYNC_SPLITS_NEW, SYNC_SPLITS_REMOVED, SYNC_SPLITS_SEGMENTS, SYNC_SPLITS_FETCH_FAILS, SYNC_SPLITS_FETCH_RETRY } from '../../../logger/constants';
|
|
10
10
|
|
|
11
11
|
type ISplitChangesUpdater = (noCache?: boolean, till?: number) => Promise<boolean>
|
|
@@ -40,7 +40,7 @@ export function parseSegments({ conditions }: ISplit): ISet<string> {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
interface ISplitMutations {
|
|
43
|
-
added: [string,
|
|
43
|
+
added: [string, ISplit][],
|
|
44
44
|
removed: string[],
|
|
45
45
|
segments: string[]
|
|
46
46
|
}
|
|
@@ -54,7 +54,7 @@ export function computeSplitsMutation(entries: ISplit[]): ISplitMutations {
|
|
|
54
54
|
const segments = new _Set<string>();
|
|
55
55
|
const computed = entries.reduce((accum, split) => {
|
|
56
56
|
if (split.status === 'ACTIVE') {
|
|
57
|
-
accum.added.push([split.name,
|
|
57
|
+
accum.added.push([split.name, split]);
|
|
58
58
|
|
|
59
59
|
parseSegments(split).forEach((segmentName: string) => {
|
|
60
60
|
segments.add(segmentName);
|
|
@@ -4,7 +4,7 @@ import { PUSH_RETRYABLE_ERROR, PUSH_NONRETRYABLE_ERROR, OCCUPANCY, CONTROL, MY_S
|
|
|
4
4
|
import { IPushEventEmitter } from '../types';
|
|
5
5
|
import { ISseEventHandler } from '../SSEClient/types';
|
|
6
6
|
import { INotificationError, INotificationMessage } from './types';
|
|
7
|
-
import { ILogger } from '../../../types';
|
|
7
|
+
import { ILogger } from '../../../logger/types';
|
|
8
8
|
import { STREAMING_PARSING_ERROR_FAILS, ERROR_STREAMING_SSE, STREAMING_PARSING_MESSAGE_FAILS, STREAMING_NEW_MESSAGE } from '../../../logger/constants';
|
|
9
9
|
import { ABLY_ERROR, NON_REQUESTED, SSE_CONNECTION_ERROR } from '../../../utils/constants';
|
|
10
10
|
import { ITelemetryTracker } from '../../../trackers/types';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ILogger } from '../../../types';
|
|
1
|
+
import { ILogger } from '../../../logger/types';
|
|
2
2
|
import { SDK_SPLITS_ARRIVED } from '../../../readiness/constants';
|
|
3
3
|
import { ISplitsEventEmitter } from '../../../readiness/types';
|
|
4
4
|
import { ISplitsCacheSync } from '../../../storages/types';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { syncTaskFactory } from '../syncTask';
|
|
2
2
|
import { ISyncTask } from '../types';
|
|
3
3
|
import { IRecorderCacheProducerSync } from '../../storages/types';
|
|
4
|
-
import { ILogger } from '../../types';
|
|
4
|
+
import { ILogger } from '../../logger/types';
|
|
5
5
|
import { SUBMITTERS_PUSH, SUBMITTERS_PUSH_FAILS, SUBMITTERS_PUSH_RETRY } from '../../logger/constants';
|
|
6
6
|
import { IResponse } from '../../services/types';
|
|
7
7
|
|
|
@@ -4,6 +4,7 @@ import { impressionCountsSubmitterFactory } from './impressionCountsSubmitter';
|
|
|
4
4
|
import { telemetrySubmitterFactory } from './telemetrySubmitter';
|
|
5
5
|
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
|
|
6
6
|
import { ISubmitterManager } from './types';
|
|
7
|
+
import { uniqueKeysSubmitterFactory } from './uniqueKeysSubmitter';
|
|
7
8
|
|
|
8
9
|
export function submitterManagerFactory(params: ISdkFactoryContextSync): ISubmitterManager {
|
|
9
10
|
|
|
@@ -15,6 +16,7 @@ export function submitterManagerFactory(params: ISdkFactoryContextSync): ISubmit
|
|
|
15
16
|
const impressionCountsSubmitter = impressionCountsSubmitterFactory(params);
|
|
16
17
|
if (impressionCountsSubmitter) submitters.push(impressionCountsSubmitter);
|
|
17
18
|
const telemetrySubmitter = telemetrySubmitterFactory(params);
|
|
19
|
+
if (params.uniqueKeysTracker) submitters.push(uniqueKeysSubmitterFactory(params));
|
|
18
20
|
|
|
19
21
|
return {
|
|
20
22
|
// `onlyTelemetry` true if SDK is created with userConsent not GRANTED
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ISegmentsCacheSync, ISplitsCacheSync, ITelemetryCacheSync } from '../../storages/types';
|
|
2
2
|
import { submitterFactory, firstPushWindowDecorator } from './submitter';
|
|
3
3
|
import { TelemetryUsageStatsPayload, TelemetryConfigStatsPayload, TelemetryConfigStats } from './types';
|
|
4
|
-
import { QUEUED, DEDUPED, DROPPED, CONSUMER_MODE, CONSUMER_ENUM, STANDALONE_MODE, CONSUMER_PARTIAL_MODE, STANDALONE_ENUM, CONSUMER_PARTIAL_ENUM, OPTIMIZED, DEBUG, DEBUG_ENUM, OPTIMIZED_ENUM, CONSENT_GRANTED, CONSENT_DECLINED, CONSENT_UNKNOWN } from '../../utils/constants';
|
|
4
|
+
import { QUEUED, DEDUPED, DROPPED, CONSUMER_MODE, CONSUMER_ENUM, STANDALONE_MODE, CONSUMER_PARTIAL_MODE, STANDALONE_ENUM, CONSUMER_PARTIAL_ENUM, OPTIMIZED, DEBUG, NONE, DEBUG_ENUM, OPTIMIZED_ENUM, NONE_ENUM, CONSENT_GRANTED, CONSENT_DECLINED, CONSENT_UNKNOWN } from '../../utils/constants';
|
|
5
5
|
import { SDK_READY, SDK_READY_FROM_CACHE } from '../../readiness/constants';
|
|
6
6
|
import { ConsentStatus, ISettings, SDKMode } from '../../types';
|
|
7
7
|
import { base } from '../../utils/settingsValidation';
|
|
@@ -52,8 +52,9 @@ const OPERATION_MODE_MAP = {
|
|
|
52
52
|
|
|
53
53
|
const IMPRESSIONS_MODE_MAP = {
|
|
54
54
|
[OPTIMIZED]: OPTIMIZED_ENUM,
|
|
55
|
-
[DEBUG]: DEBUG_ENUM
|
|
56
|
-
|
|
55
|
+
[DEBUG]: DEBUG_ENUM,
|
|
56
|
+
[NONE]: NONE_ENUM
|
|
57
|
+
} as Record<ISettings['sync']['impressionsMode'], (0 | 1 | 2)>;
|
|
57
58
|
|
|
58
59
|
const USER_CONSENT_MAP = {
|
|
59
60
|
[CONSENT_UNKNOWN]: 1,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IMetadata } from '../../dtos/types';
|
|
2
|
-
import {
|
|
2
|
+
import { SplitIO } from '../../types';
|
|
3
3
|
import { ISyncTask } from '../types';
|
|
4
4
|
|
|
5
5
|
export type ImpressionsPayload = {
|
|
@@ -35,6 +35,24 @@ export type ImpressionCountsPayload = {
|
|
|
35
35
|
}[]
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
export type UniqueKeysPayloadSs = {
|
|
39
|
+
keys: {
|
|
40
|
+
/** Split name */
|
|
41
|
+
f: string
|
|
42
|
+
/** keyNames */
|
|
43
|
+
ks: string[]
|
|
44
|
+
}[]
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export type UniqueKeysPayloadCs = {
|
|
48
|
+
keys: {
|
|
49
|
+
/** keyNames */
|
|
50
|
+
k: string
|
|
51
|
+
/** Split name */
|
|
52
|
+
fs: string[]
|
|
53
|
+
}[]
|
|
54
|
+
}
|
|
55
|
+
|
|
38
56
|
export type StoredImpressionWithMetadata = {
|
|
39
57
|
/** Metadata */
|
|
40
58
|
m: IMetadata,
|
|
@@ -61,7 +79,7 @@ export type StoredEventWithMetadata = {
|
|
|
61
79
|
/** Metadata */
|
|
62
80
|
m: IMetadata,
|
|
63
81
|
/** Stored event */
|
|
64
|
-
e: EventData
|
|
82
|
+
e: SplitIO.EventData
|
|
65
83
|
}
|
|
66
84
|
|
|
67
85
|
/**
|
|
@@ -148,7 +166,8 @@ export type OperationMode = STANDALONE_ENUM | CONSUMER_ENUM | CONSUMER_PARTIAL_E
|
|
|
148
166
|
|
|
149
167
|
export type OPTIMIZED_ENUM = 0;
|
|
150
168
|
export type DEBUG_ENUM = 1;
|
|
151
|
-
export type
|
|
169
|
+
export type NONE_ENUM = 2;
|
|
170
|
+
export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM | NONE_ENUM;
|
|
152
171
|
|
|
153
172
|
export type RefreshRates = {
|
|
154
173
|
sp: number, // splits
|