@splitsoftware/splitio-commons 2.4.2-rc.3 → 11.5.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.txt +895 -152
- package/CONTRIBUTORS-GUIDE.md +26 -16
- package/README.md +43 -5
- package/cjs/factory/browser.js +73 -0
- package/cjs/factory/node.js +79 -0
- package/cjs/factory/package.json +4 -0
- package/cjs/index.js +3 -16
- package/cjs/{utils/MinEvents.js → platform/EventEmitter.js} +153 -27
- package/cjs/platform/browser.js +15 -0
- package/cjs/platform/filter/bloomFilter.js +32 -0
- package/cjs/platform/getEventSource/browser.js +7 -0
- package/cjs/platform/getEventSource/eventsource.js +480 -0
- package/cjs/platform/getEventSource/node.js +25 -0
- package/cjs/platform/getEventSource/package.json +4 -0
- package/cjs/platform/getFetch/browser.js +9 -0
- package/cjs/platform/getFetch/node.js +26 -0
- package/cjs/platform/getFetch/package.json +4 -0
- package/cjs/platform/getOptions/node.js +25 -0
- package/cjs/platform/node.js +18 -0
- package/cjs/platform/package.json +4 -0
- package/cjs/settings/browser.js +21 -0
- package/cjs/settings/defaults/browser.js +21 -0
- package/cjs/settings/defaults/node.js +23 -0
- package/cjs/{listeners/types.js → settings/defaults/version.js} +2 -0
- package/cjs/settings/integrations/browser.js +9 -0
- package/cjs/settings/node.js +22 -0
- package/cjs/settings/package.json +4 -0
- package/cjs/settings/runtime/node.js +22 -0
- package/cjs/settings/storage/browser.js +35 -0
- package/cjs/settings/storage/node.js +67 -0
- package/cjs/sync/offline/LocalhostFromFile.js +8 -0
- package/cjs/sync/offline/splitsParserFromFile.js +148 -0
- package/cjs/umd.js +5 -0
- package/cjs/utils/ip.js +114 -0
- package/client/package.json +5 -0
- package/esm/factory/browser.js +69 -0
- package/esm/factory/node.js +75 -0
- package/esm/factory/package.json +4 -0
- package/esm/index.js +1 -10
- package/esm/{utils/MinEvents.js → platform/EventEmitter.js} +143 -17
- package/esm/platform/browser.js +12 -0
- package/esm/platform/filter/bloomFilter.js +28 -0
- package/esm/platform/getEventSource/browser.js +3 -0
- package/esm/platform/getEventSource/eventsource.js +480 -0
- package/esm/platform/getEventSource/node.js +19 -0
- package/esm/platform/getEventSource/package.json +4 -0
- package/esm/platform/getFetch/browser.js +4 -0
- package/esm/platform/getFetch/node.js +21 -0
- package/esm/platform/getFetch/package.json +4 -0
- package/esm/platform/getOptions/node.js +20 -0
- package/esm/platform/node.js +14 -0
- package/esm/platform/package.json +4 -0
- package/esm/settings/browser.js +17 -0
- package/esm/settings/defaults/browser.js +18 -0
- package/esm/settings/defaults/node.js +20 -0
- package/esm/settings/defaults/version.js +1 -0
- package/esm/settings/integrations/browser.js +5 -0
- package/esm/settings/node.js +18 -0
- package/esm/settings/package.json +4 -0
- package/esm/settings/runtime/node.js +17 -0
- package/esm/settings/storage/browser.js +31 -0
- package/esm/settings/storage/node.js +63 -0
- package/esm/sync/offline/LocalhostFromFile.js +5 -0
- package/esm/sync/offline/splitsParserFromFile.js +143 -0
- package/esm/umd.js +3 -0
- package/esm/utils/ip.js +109 -0
- package/package.json +99 -58
- package/server/package.json +5 -0
- package/src/factory/browser.js +85 -0
- package/src/factory/node.js +92 -0
- package/src/factory/package.json +4 -0
- package/src/index.js +1 -0
- package/src/{utils/MinEvents.ts → platform/EventEmitter.js} +164 -19
- package/src/platform/browser.js +14 -0
- package/src/platform/filter/bloomFilter.js +33 -0
- package/src/platform/getEventSource/browser.js +3 -0
- package/src/platform/getEventSource/eventsource.js +519 -0
- package/src/platform/getEventSource/node.js +20 -0
- package/src/platform/getEventSource/package.json +4 -0
- package/src/platform/getFetch/browser.js +5 -0
- package/src/platform/getFetch/node.js +24 -0
- package/src/platform/getFetch/package.json +4 -0
- package/src/platform/getOptions/node.js +23 -0
- package/src/platform/node.js +16 -0
- package/src/platform/package.json +4 -0
- package/src/settings/browser.js +20 -0
- package/src/settings/defaults/browser.js +21 -0
- package/src/settings/defaults/node.js +23 -0
- package/src/settings/defaults/version.js +1 -0
- package/src/settings/integrations/browser.js +6 -0
- package/src/settings/node.js +21 -0
- package/src/settings/package.json +4 -0
- package/src/settings/runtime/node.js +21 -0
- package/src/settings/storage/browser.js +47 -0
- package/src/settings/storage/node.js +84 -0
- package/src/sync/offline/LocalhostFromFile.js +6 -0
- package/src/sync/offline/splitsParserFromFile.js +173 -0
- package/src/umd.js +4 -0
- package/src/utils/ip.js +123 -0
- package/types/client/index.d.ts +15 -0
- package/types/index.d.ts +24 -1
- package/types/server/index.d.ts +21 -0
- package/types/splitio.d.ts +2 -2083
- package/cjs/consent/index.js +0 -10
- package/cjs/consent/sdkUserConsent.js +0 -60
- package/cjs/dtos/types.js +0 -2
- package/cjs/evaluator/Engine.js +0 -58
- package/cjs/evaluator/combiners/and.js +0 -25
- package/cjs/evaluator/combiners/ifelseif.js +0 -48
- package/cjs/evaluator/condition/engineUtils.js +0 -29
- package/cjs/evaluator/condition/index.js +0 -41
- package/cjs/evaluator/convertions/index.js +0 -11
- package/cjs/evaluator/index.js +0 -134
- package/cjs/evaluator/matchers/all.js +0 -9
- package/cjs/evaluator/matchers/between.js +0 -10
- package/cjs/evaluator/matchers/boolean.js +0 -10
- package/cjs/evaluator/matchers/cont_all.js +0 -23
- package/cjs/evaluator/matchers/cont_any.js +0 -18
- package/cjs/evaluator/matchers/cont_str.js +0 -11
- package/cjs/evaluator/matchers/dependency.js +0 -28
- package/cjs/evaluator/matchers/eq.js +0 -10
- package/cjs/evaluator/matchers/eq_set.js +0 -20
- package/cjs/evaluator/matchers/ew.js +0 -11
- package/cjs/evaluator/matchers/gte.js +0 -10
- package/cjs/evaluator/matchers/index.js +0 -66
- package/cjs/evaluator/matchers/large_segment.js +0 -10
- package/cjs/evaluator/matchers/lte.js +0 -10
- package/cjs/evaluator/matchers/matcherTypes.js +0 -46
- package/cjs/evaluator/matchers/part_of.js +0 -20
- package/cjs/evaluator/matchers/prerequisites.js +0 -22
- package/cjs/evaluator/matchers/rbsegment.js +0 -56
- package/cjs/evaluator/matchers/segment.js +0 -10
- package/cjs/evaluator/matchers/semver_between.js +0 -14
- package/cjs/evaluator/matchers/semver_eq.js +0 -13
- package/cjs/evaluator/matchers/semver_gte.js +0 -13
- package/cjs/evaluator/matchers/semver_inlist.js +0 -16
- package/cjs/evaluator/matchers/semver_lte.js +0 -13
- package/cjs/evaluator/matchers/string.js +0 -11
- package/cjs/evaluator/matchers/sw.js +0 -11
- package/cjs/evaluator/matchers/whitelist.js +0 -11
- package/cjs/evaluator/matchersTransform/index.js +0 -104
- package/cjs/evaluator/matchersTransform/segment.js +0 -12
- package/cjs/evaluator/matchersTransform/unaryNumeric.js +0 -10
- package/cjs/evaluator/matchersTransform/whitelist.js +0 -10
- package/cjs/evaluator/parser/index.js +0 -61
- package/cjs/evaluator/treatments/index.js +0 -42
- package/cjs/evaluator/types.js +0 -2
- package/cjs/evaluator/value/index.js +0 -37
- package/cjs/evaluator/value/sanitize.js +0 -94
- package/cjs/integrations/pluggable.js +0 -35
- package/cjs/integrations/types.js +0 -2
- package/cjs/listeners/browser.js +0 -121
- package/cjs/listeners/node.js +0 -68
- package/cjs/logger/browser/DebugLogger.js +0 -9
- package/cjs/logger/browser/ErrorLogger.js +0 -9
- package/cjs/logger/browser/InfoLogger.js +0 -9
- package/cjs/logger/browser/WarnLogger.js +0 -9
- package/cjs/logger/constants.js +0 -140
- package/cjs/logger/index.js +0 -100
- package/cjs/logger/messages/debug.js +0 -36
- package/cjs/logger/messages/error.js +0 -42
- package/cjs/logger/messages/info.js +0 -37
- package/cjs/logger/messages/warn.js +0 -42
- package/cjs/logger/sdkLogger.js +0 -45
- package/cjs/logger/types.js +0 -2
- package/cjs/readiness/constants.js +0 -13
- package/cjs/readiness/readinessManager.js +0 -154
- package/cjs/readiness/sdkReadinessManager.js +0 -104
- package/cjs/readiness/types.js +0 -2
- package/cjs/sdkClient/client.js +0 -183
- package/cjs/sdkClient/clientAttributesDecoration.js +0 -122
- package/cjs/sdkClient/clientCS.js +0 -30
- package/cjs/sdkClient/clientInputValidation.js +0 -147
- package/cjs/sdkClient/identity.js +0 -7
- package/cjs/sdkClient/sdkClient.js +0 -64
- package/cjs/sdkClient/sdkClientMethod.js +0 -22
- package/cjs/sdkClient/sdkClientMethodCS.js +0 -66
- package/cjs/sdkFactory/index.js +0 -108
- package/cjs/sdkFactory/types.js +0 -2
- package/cjs/sdkManager/index.js +0 -96
- package/cjs/services/decorateHeaders.js +0 -40
- package/cjs/services/splitApi.js +0 -131
- package/cjs/services/splitHttpClient.js +0 -82
- package/cjs/services/types.js +0 -2
- package/cjs/storages/AbstractMySegmentsCacheSync.js +0 -60
- package/cjs/storages/AbstractSplitsCacheAsync.js +0 -51
- package/cjs/storages/AbstractSplitsCacheSync.js +0 -75
- package/cjs/storages/KeyBuilder.js +0 -68
- package/cjs/storages/KeyBuilderCS.js +0 -65
- package/cjs/storages/KeyBuilderSS.js +0 -60
- package/cjs/storages/dataLoader.js +0 -50
- package/cjs/storages/findLatencyIndex.js +0 -18
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -81
- package/cjs/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -117
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +0 -204
- package/cjs/storages/inLocalStorage/constants.js +0 -5
- package/cjs/storages/inLocalStorage/index.js +0 -91
- package/cjs/storages/inLocalStorage/storageAdapter.js +0 -54
- package/cjs/storages/inLocalStorage/validateCache.js +0 -85
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +0 -70
- package/cjs/storages/inMemory/EventsCacheInMemory.js +0 -63
- package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -65
- package/cjs/storages/inMemory/ImpressionsCacheInMemory.js +0 -51
- package/cjs/storages/inMemory/InMemoryStorage.js +0 -46
- package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -63
- package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +0 -46
- package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -61
- package/cjs/storages/inMemory/SegmentsCacheInMemory.js +0 -61
- package/cjs/storages/inMemory/SplitsCacheInMemory.js +0 -121
- package/cjs/storages/inMemory/TelemetryCacheInMemory.js +0 -207
- package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +0 -72
- package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -71
- package/cjs/storages/inRedis/EventsCacheInRedis.js +0 -60
- package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -85
- package/cjs/storages/inRedis/ImpressionsCacheInRedis.js +0 -45
- package/cjs/storages/inRedis/RBSegmentsCacheInRedis.js +0 -64
- package/cjs/storages/inRedis/RedisAdapter.js +0 -195
- package/cjs/storages/inRedis/SegmentsCacheInRedis.js +0 -57
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +0 -243
- package/cjs/storages/inRedis/TelemetryCacheInRedis.js +0 -124
- package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +0 -69
- package/cjs/storages/inRedis/constants.js +0 -7
- package/cjs/storages/inRedis/index.js +0 -73
- package/cjs/storages/pluggable/EventsCachePluggable.js +0 -64
- package/cjs/storages/pluggable/ImpressionCountsCachePluggable.js +0 -81
- package/cjs/storages/pluggable/ImpressionsCachePluggable.js +0 -48
- package/cjs/storages/pluggable/RBSegmentsCachePluggable.js +0 -64
- package/cjs/storages/pluggable/SegmentsCachePluggable.js +0 -80
- package/cjs/storages/pluggable/SplitsCachePluggable.js +0 -212
- package/cjs/storages/pluggable/TelemetryCachePluggable.js +0 -141
- package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +0 -62
- package/cjs/storages/pluggable/constants.js +0 -4
- package/cjs/storages/pluggable/inMemoryWrapper.js +0 -141
- package/cjs/storages/pluggable/index.js +0 -135
- package/cjs/storages/pluggable/wrapperAdapter.js +0 -53
- package/cjs/storages/types.js +0 -2
- package/cjs/storages/utils.js +0 -74
- package/cjs/sync/offline/LocalhostFromObject.js +0 -8
- package/cjs/sync/offline/splitsParser/parseCondition.js +0 -55
- package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +0 -62
- package/cjs/sync/offline/splitsParser/types.js +0 -2
- package/cjs/sync/offline/syncManagerOffline.js +0 -52
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +0 -71
- package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +0 -18
- package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +0 -34
- package/cjs/sync/polling/fetchers/splitChangesFetcher.js +0 -68
- package/cjs/sync/polling/fetchers/types.js +0 -2
- package/cjs/sync/polling/pollingManagerCS.js +0 -100
- package/cjs/sync/polling/pollingManagerSS.js +0 -49
- package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -13
- package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +0 -13
- package/cjs/sync/polling/syncTasks/splitsSyncTask.js +0 -13
- package/cjs/sync/polling/types.js +0 -2
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +0 -83
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +0 -80
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +0 -190
- package/cjs/sync/streaming/AuthClient/index.js +0 -43
- package/cjs/sync/streaming/AuthClient/types.js +0 -2
- package/cjs/sync/streaming/SSEClient/index.js +0 -86
- package/cjs/sync/streaming/SSEClient/types.js +0 -2
- package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +0 -98
- package/cjs/sync/streaming/SSEHandler/NotificationParser.js +0 -41
- package/cjs/sync/streaming/SSEHandler/index.js +0 -97
- package/cjs/sync/streaming/SSEHandler/types.js +0 -16
- package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -124
- package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -92
- package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -136
- package/cjs/sync/streaming/UpdateWorkers/constants.js +0 -6
- package/cjs/sync/streaming/UpdateWorkers/types.js +0 -2
- package/cjs/sync/streaming/constants.js +0 -43
- package/cjs/sync/streaming/parseUtils.js +0 -98
- package/cjs/sync/streaming/pushManager.js +0 -317
- package/cjs/sync/streaming/types.js +0 -2
- package/cjs/sync/submitters/eventsSubmitter.js +0 -28
- package/cjs/sync/submitters/impressionCountsSubmitter.js +0 -36
- package/cjs/sync/submitters/impressionsSubmitter.js +0 -54
- package/cjs/sync/submitters/submitter.js +0 -66
- package/cjs/sync/submitters/submitterManager.js +0 -46
- package/cjs/sync/submitters/telemetrySubmitter.js +0 -125
- package/cjs/sync/submitters/types.js +0 -2
- package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -27
- package/cjs/sync/syncManagerOnline.js +0 -176
- package/cjs/sync/syncTask.js +0 -84
- package/cjs/sync/types.js +0 -2
- package/cjs/trackers/eventTracker.js +0 -62
- package/cjs/trackers/impressionObserver/ImpressionObserver.js +0 -18
- package/cjs/trackers/impressionObserver/buildKey.js +0 -7
- package/cjs/trackers/impressionObserver/impressionObserverCS.js +0 -15
- package/cjs/trackers/impressionObserver/impressionObserverSS.js +0 -15
- package/cjs/trackers/impressionObserver/types.js +0 -2
- package/cjs/trackers/impressionsTracker.js +0 -78
- package/cjs/trackers/strategy/strategyDebug.js +0 -20
- package/cjs/trackers/strategy/strategyNone.js +0 -24
- package/cjs/trackers/strategy/strategyOptimized.js +0 -28
- package/cjs/trackers/telemetryTracker.js +0 -75
- package/cjs/trackers/types.js +0 -2
- package/cjs/trackers/uniqueKeysTracker.js +0 -40
- package/cjs/types.js +0 -2
- package/cjs/utils/Backoff.js +0 -41
- package/cjs/utils/LRUCache/LinkedList.js +0 -114
- package/cjs/utils/LRUCache/index.js +0 -42
- package/cjs/utils/MinEventEmitter.js +0 -100
- package/cjs/utils/Semver.js +0 -103
- package/cjs/utils/base64/index.js +0 -75
- package/cjs/utils/constants/index.js +0 -100
- package/cjs/utils/decompress/index.js +0 -427
- package/cjs/utils/env/isLocalStorageAvailable.js +0 -39
- package/cjs/utils/env/isNode.js +0 -9
- package/cjs/utils/inputValidation/apiKey.js +0 -54
- package/cjs/utils/inputValidation/attribute.js +0 -20
- package/cjs/utils/inputValidation/attributes.js +0 -25
- package/cjs/utils/inputValidation/event.js +0 -28
- package/cjs/utils/inputValidation/eventProperties.js +0 -74
- package/cjs/utils/inputValidation/eventValue.js +0 -12
- package/cjs/utils/inputValidation/index.js +0 -34
- package/cjs/utils/inputValidation/isOperational.js +0 -18
- package/cjs/utils/inputValidation/key.js +0 -51
- package/cjs/utils/inputValidation/preloadedData.js +0 -59
- package/cjs/utils/inputValidation/split.js +0 -30
- package/cjs/utils/inputValidation/splitExistence.js +0 -19
- package/cjs/utils/inputValidation/splits.js +0 -25
- package/cjs/utils/inputValidation/trafficType.js +0 -29
- package/cjs/utils/inputValidation/trafficTypeExistence.js +0 -31
- package/cjs/utils/jwt/index.js +0 -17
- package/cjs/utils/jwt/types.js +0 -2
- package/cjs/utils/key/index.js +0 -36
- package/cjs/utils/labels/index.js +0 -12
- package/cjs/utils/lang/binarySearch.js +0 -42
- package/cjs/utils/lang/getFnName.js +0 -12
- package/cjs/utils/lang/getGlobal.js +0 -18
- package/cjs/utils/lang/index.js +0 -281
- package/cjs/utils/lang/objectAssign.js +0 -20
- package/cjs/utils/lang/sets.js +0 -23
- package/cjs/utils/murmur3/common.js +0 -46
- package/cjs/utils/murmur3/legacy.js +0 -44
- package/cjs/utils/murmur3/murmur3.js +0 -62
- package/cjs/utils/murmur3/murmur3_128.js +0 -219
- package/cjs/utils/murmur3/murmur3_128_x86.js +0 -154
- package/cjs/utils/murmur3/murmur3_64.js +0 -36
- package/cjs/utils/murmur3/utfx.js +0 -108
- package/cjs/utils/promise/thenable.js +0 -8
- package/cjs/utils/promise/timeout.js +0 -20
- package/cjs/utils/promise/wrapper.js +0 -58
- package/cjs/utils/settingsValidation/consent.js +0 -16
- package/cjs/utils/settingsValidation/impressionsMode.js +0 -14
- package/cjs/utils/settingsValidation/index.js +0 -184
- package/cjs/utils/settingsValidation/integrations/common.js +0 -27
- package/cjs/utils/settingsValidation/integrations/configurable.js +0 -18
- package/cjs/utils/settingsValidation/integrations/pluggable.js +0 -15
- package/cjs/utils/settingsValidation/logger/builtinLogger.js +0 -46
- package/cjs/utils/settingsValidation/logger/commons.js +0 -28
- package/cjs/utils/settingsValidation/logger/pluggableLogger.js +0 -32
- package/cjs/utils/settingsValidation/mode.js +0 -20
- package/cjs/utils/settingsValidation/runtime.js +0 -11
- package/cjs/utils/settingsValidation/splitFilters.js +0 -188
- package/cjs/utils/settingsValidation/storage/storageCS.js +0 -49
- package/cjs/utils/settingsValidation/types.js +0 -2
- package/cjs/utils/settingsValidation/url.js +0 -31
- package/cjs/utils/time/index.js +0 -11
- package/cjs/utils/timeTracker/now/browser.js +0 -15
- package/cjs/utils/timeTracker/now/node.js +0 -9
- package/cjs/utils/timeTracker/timer.js +0 -10
- package/esm/consent/index.js +0 -6
- package/esm/consent/sdkUserConsent.js +0 -56
- package/esm/dtos/types.js +0 -1
- package/esm/evaluator/Engine.js +0 -54
- package/esm/evaluator/combiners/and.js +0 -21
- package/esm/evaluator/combiners/ifelseif.js +0 -44
- package/esm/evaluator/condition/engineUtils.js +0 -24
- package/esm/evaluator/condition/index.js +0 -37
- package/esm/evaluator/convertions/index.js +0 -6
- package/esm/evaluator/index.js +0 -128
- package/esm/evaluator/matchers/all.js +0 -5
- package/esm/evaluator/matchers/between.js +0 -6
- package/esm/evaluator/matchers/boolean.js +0 -6
- package/esm/evaluator/matchers/cont_all.js +0 -19
- package/esm/evaluator/matchers/cont_any.js +0 -14
- package/esm/evaluator/matchers/cont_str.js +0 -7
- package/esm/evaluator/matchers/dependency.js +0 -24
- package/esm/evaluator/matchers/eq.js +0 -6
- package/esm/evaluator/matchers/eq_set.js +0 -16
- package/esm/evaluator/matchers/ew.js +0 -7
- package/esm/evaluator/matchers/gte.js +0 -6
- package/esm/evaluator/matchers/index.js +0 -62
- package/esm/evaluator/matchers/large_segment.js +0 -6
- package/esm/evaluator/matchers/lte.js +0 -6
- package/esm/evaluator/matchers/matcherTypes.js +0 -42
- package/esm/evaluator/matchers/part_of.js +0 -16
- package/esm/evaluator/matchers/prerequisites.js +0 -18
- package/esm/evaluator/matchers/rbsegment.js +0 -52
- package/esm/evaluator/matchers/segment.js +0 -6
- package/esm/evaluator/matchers/semver_between.js +0 -10
- package/esm/evaluator/matchers/semver_eq.js +0 -9
- package/esm/evaluator/matchers/semver_gte.js +0 -9
- package/esm/evaluator/matchers/semver_inlist.js +0 -12
- package/esm/evaluator/matchers/semver_lte.js +0 -9
- package/esm/evaluator/matchers/string.js +0 -7
- package/esm/evaluator/matchers/sw.js +0 -7
- package/esm/evaluator/matchers/whitelist.js +0 -7
- package/esm/evaluator/matchersTransform/index.js +0 -100
- package/esm/evaluator/matchersTransform/segment.js +0 -8
- package/esm/evaluator/matchersTransform/unaryNumeric.js +0 -6
- package/esm/evaluator/matchersTransform/whitelist.js +0 -6
- package/esm/evaluator/parser/index.js +0 -57
- package/esm/evaluator/treatments/index.js +0 -39
- package/esm/evaluator/types.js +0 -1
- package/esm/evaluator/value/index.js +0 -33
- package/esm/evaluator/value/sanitize.js +0 -90
- package/esm/integrations/pluggable.js +0 -31
- package/esm/integrations/types.js +0 -1
- package/esm/listeners/browser.js +0 -118
- package/esm/listeners/node.js +0 -65
- package/esm/listeners/types.js +0 -1
- package/esm/logger/browser/DebugLogger.js +0 -5
- package/esm/logger/browser/ErrorLogger.js +0 -5
- package/esm/logger/browser/InfoLogger.js +0 -5
- package/esm/logger/browser/WarnLogger.js +0 -5
- package/esm/logger/constants.js +0 -135
- package/esm/logger/index.js +0 -95
- package/esm/logger/messages/debug.js +0 -32
- package/esm/logger/messages/error.js +0 -38
- package/esm/logger/messages/info.js +0 -33
- package/esm/logger/messages/warn.js +0 -38
- package/esm/logger/sdkLogger.js +0 -41
- package/esm/logger/types.js +0 -1
- package/esm/readiness/constants.js +0 -10
- package/esm/readiness/readinessManager.js +0 -150
- package/esm/readiness/sdkReadinessManager.js +0 -100
- package/esm/readiness/types.js +0 -1
- package/esm/sdkClient/client.js +0 -179
- package/esm/sdkClient/clientAttributesDecoration.js +0 -118
- package/esm/sdkClient/clientCS.js +0 -26
- package/esm/sdkClient/clientInputValidation.js +0 -143
- package/esm/sdkClient/identity.js +0 -3
- package/esm/sdkClient/sdkClient.js +0 -60
- package/esm/sdkClient/sdkClientMethod.js +0 -18
- package/esm/sdkClient/sdkClientMethodCS.js +0 -62
- package/esm/sdkFactory/index.js +0 -104
- package/esm/sdkFactory/types.js +0 -1
- package/esm/sdkManager/index.js +0 -92
- package/esm/services/decorateHeaders.js +0 -35
- package/esm/services/splitApi.js +0 -127
- package/esm/services/splitHttpClient.js +0 -78
- package/esm/services/types.js +0 -1
- package/esm/storages/AbstractMySegmentsCacheSync.js +0 -57
- package/esm/storages/AbstractSplitsCacheAsync.js +0 -48
- package/esm/storages/AbstractSplitsCacheSync.js +0 -70
- package/esm/storages/KeyBuilder.js +0 -63
- package/esm/storages/KeyBuilderCS.js +0 -61
- package/esm/storages/KeyBuilderSS.js +0 -57
- package/esm/storages/dataLoader.js +0 -46
- package/esm/storages/findLatencyIndex.js +0 -14
- package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -78
- package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -114
- package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +0 -201
- package/esm/storages/inLocalStorage/constants.js +0 -2
- package/esm/storages/inLocalStorage/index.js +0 -87
- package/esm/storages/inLocalStorage/storageAdapter.js +0 -50
- package/esm/storages/inLocalStorage/validateCache.js +0 -81
- package/esm/storages/inMemory/AttributesCacheInMemory.js +0 -67
- package/esm/storages/inMemory/EventsCacheInMemory.js +0 -60
- package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -62
- package/esm/storages/inMemory/ImpressionsCacheInMemory.js +0 -48
- package/esm/storages/inMemory/InMemoryStorage.js +0 -42
- package/esm/storages/inMemory/InMemoryStorageCS.js +0 -59
- package/esm/storages/inMemory/MySegmentsCacheInMemory.js +0 -43
- package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -58
- package/esm/storages/inMemory/SegmentsCacheInMemory.js +0 -58
- package/esm/storages/inMemory/SplitsCacheInMemory.js +0 -118
- package/esm/storages/inMemory/TelemetryCacheInMemory.js +0 -202
- package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +0 -68
- package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -68
- package/esm/storages/inRedis/EventsCacheInRedis.js +0 -57
- package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -82
- package/esm/storages/inRedis/ImpressionsCacheInRedis.js +0 -42
- package/esm/storages/inRedis/RBSegmentsCacheInRedis.js +0 -61
- package/esm/storages/inRedis/RedisAdapter.js +0 -192
- package/esm/storages/inRedis/SegmentsCacheInRedis.js +0 -54
- package/esm/storages/inRedis/SplitsCacheInRedis.js +0 -240
- package/esm/storages/inRedis/TelemetryCacheInRedis.js +0 -121
- package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +0 -66
- package/esm/storages/inRedis/constants.js +0 -4
- package/esm/storages/inRedis/index.js +0 -69
- package/esm/storages/pluggable/EventsCachePluggable.js +0 -61
- package/esm/storages/pluggable/ImpressionCountsCachePluggable.js +0 -78
- package/esm/storages/pluggable/ImpressionsCachePluggable.js +0 -45
- package/esm/storages/pluggable/RBSegmentsCachePluggable.js +0 -61
- package/esm/storages/pluggable/SegmentsCachePluggable.js +0 -77
- package/esm/storages/pluggable/SplitsCachePluggable.js +0 -209
- package/esm/storages/pluggable/TelemetryCachePluggable.js +0 -138
- package/esm/storages/pluggable/UniqueKeysCachePluggable.js +0 -59
- package/esm/storages/pluggable/constants.js +0 -1
- package/esm/storages/pluggable/inMemoryWrapper.js +0 -137
- package/esm/storages/pluggable/index.js +0 -131
- package/esm/storages/pluggable/wrapperAdapter.js +0 -49
- package/esm/storages/types.js +0 -1
- package/esm/storages/utils.js +0 -66
- package/esm/sync/offline/LocalhostFromObject.js +0 -5
- package/esm/sync/offline/splitsParser/parseCondition.js +0 -51
- package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +0 -58
- package/esm/sync/offline/splitsParser/types.js +0 -1
- package/esm/sync/offline/syncManagerOffline.js +0 -48
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +0 -66
- package/esm/sync/polling/fetchers/mySegmentsFetcher.js +0 -14
- package/esm/sync/polling/fetchers/segmentChangesFetcher.js +0 -30
- package/esm/sync/polling/fetchers/splitChangesFetcher.js +0 -64
- package/esm/sync/polling/fetchers/types.js +0 -1
- package/esm/sync/polling/pollingManagerCS.js +0 -96
- package/esm/sync/polling/pollingManagerSS.js +0 -45
- package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -9
- package/esm/sync/polling/syncTasks/segmentsSyncTask.js +0 -9
- package/esm/sync/polling/syncTasks/splitsSyncTask.js +0 -9
- package/esm/sync/polling/types.js +0 -1
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +0 -79
- package/esm/sync/polling/updaters/segmentChangesUpdater.js +0 -76
- package/esm/sync/polling/updaters/splitChangesUpdater.js +0 -184
- package/esm/sync/streaming/AuthClient/index.js +0 -38
- package/esm/sync/streaming/AuthClient/types.js +0 -1
- package/esm/sync/streaming/SSEClient/index.js +0 -83
- package/esm/sync/streaming/SSEClient/types.js +0 -1
- package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +0 -94
- package/esm/sync/streaming/SSEHandler/NotificationParser.js +0 -36
- package/esm/sync/streaming/SSEHandler/index.js +0 -93
- package/esm/sync/streaming/SSEHandler/types.js +0 -13
- package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -120
- package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -88
- package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -132
- package/esm/sync/streaming/UpdateWorkers/constants.js +0 -3
- package/esm/sync/streaming/UpdateWorkers/types.js +0 -1
- package/esm/sync/streaming/constants.js +0 -40
- package/esm/sync/streaming/parseUtils.js +0 -90
- package/esm/sync/streaming/pushManager.js +0 -313
- package/esm/sync/streaming/types.js +0 -1
- package/esm/sync/submitters/eventsSubmitter.js +0 -24
- package/esm/sync/submitters/impressionCountsSubmitter.js +0 -31
- package/esm/sync/submitters/impressionsSubmitter.js +0 -49
- package/esm/sync/submitters/submitter.js +0 -61
- package/esm/sync/submitters/submitterManager.js +0 -42
- package/esm/sync/submitters/telemetrySubmitter.js +0 -119
- package/esm/sync/submitters/types.js +0 -1
- package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -23
- package/esm/sync/syncManagerOnline.js +0 -172
- package/esm/sync/syncTask.js +0 -80
- package/esm/sync/types.js +0 -1
- package/esm/trackers/eventTracker.js +0 -58
- package/esm/trackers/impressionObserver/ImpressionObserver.js +0 -15
- package/esm/trackers/impressionObserver/buildKey.js +0 -3
- package/esm/trackers/impressionObserver/impressionObserverCS.js +0 -10
- package/esm/trackers/impressionObserver/impressionObserverSS.js +0 -10
- package/esm/trackers/impressionObserver/types.js +0 -1
- package/esm/trackers/impressionsTracker.js +0 -74
- package/esm/trackers/strategy/strategyDebug.js +0 -16
- package/esm/trackers/strategy/strategyNone.js +0 -20
- package/esm/trackers/strategy/strategyOptimized.js +0 -24
- package/esm/trackers/telemetryTracker.js +0 -71
- package/esm/trackers/types.js +0 -1
- package/esm/trackers/uniqueKeysTracker.js +0 -36
- package/esm/types.js +0 -1
- package/esm/utils/Backoff.js +0 -38
- package/esm/utils/LRUCache/LinkedList.js +0 -111
- package/esm/utils/LRUCache/index.js +0 -39
- package/esm/utils/MinEventEmitter.js +0 -97
- package/esm/utils/Semver.js +0 -100
- package/esm/utils/base64/index.js +0 -70
- package/esm/utils/constants/index.js +0 -96
- package/esm/utils/decompress/index.js +0 -424
- package/esm/utils/env/isLocalStorageAvailable.js +0 -33
- package/esm/utils/env/isNode.js +0 -6
- package/esm/utils/inputValidation/apiKey.js +0 -48
- package/esm/utils/inputValidation/attribute.js +0 -16
- package/esm/utils/inputValidation/attributes.js +0 -20
- package/esm/utils/inputValidation/event.js +0 -24
- package/esm/utils/inputValidation/eventProperties.js +0 -69
- package/esm/utils/inputValidation/eventValue.js +0 -8
- package/esm/utils/inputValidation/index.js +0 -14
- package/esm/utils/inputValidation/isOperational.js +0 -13
- package/esm/utils/inputValidation/key.js +0 -47
- package/esm/utils/inputValidation/preloadedData.js +0 -55
- package/esm/utils/inputValidation/split.js +0 -26
- package/esm/utils/inputValidation/splitExistence.js +0 -15
- package/esm/utils/inputValidation/splits.js +0 -21
- package/esm/utils/inputValidation/trafficType.js +0 -25
- package/esm/utils/inputValidation/trafficTypeExistence.js +0 -27
- package/esm/utils/jwt/index.js +0 -13
- package/esm/utils/jwt/types.js +0 -1
- package/esm/utils/key/index.js +0 -30
- package/esm/utils/labels/index.js +0 -9
- package/esm/utils/lang/binarySearch.js +0 -38
- package/esm/utils/lang/getFnName.js +0 -8
- package/esm/utils/lang/getGlobal.js +0 -14
- package/esm/utils/lang/index.js +0 -258
- package/esm/utils/lang/objectAssign.js +0 -17
- package/esm/utils/lang/sets.js +0 -17
- package/esm/utils/murmur3/common.js +0 -39
- package/esm/utils/murmur3/legacy.js +0 -39
- package/esm/utils/murmur3/murmur3.js +0 -57
- package/esm/utils/murmur3/murmur3_128.js +0 -215
- package/esm/utils/murmur3/murmur3_128_x86.js +0 -150
- package/esm/utils/murmur3/murmur3_64.js +0 -32
- package/esm/utils/murmur3/utfx.js +0 -102
- package/esm/utils/promise/thenable.js +0 -4
- package/esm/utils/promise/timeout.js +0 -16
- package/esm/utils/promise/wrapper.js +0 -54
- package/esm/utils/settingsValidation/consent.js +0 -12
- package/esm/utils/settingsValidation/impressionsMode.js +0 -10
- package/esm/utils/settingsValidation/index.js +0 -180
- package/esm/utils/settingsValidation/integrations/common.js +0 -23
- package/esm/utils/settingsValidation/integrations/configurable.js +0 -14
- package/esm/utils/settingsValidation/integrations/pluggable.js +0 -11
- package/esm/utils/settingsValidation/logger/builtinLogger.js +0 -42
- package/esm/utils/settingsValidation/logger/commons.js +0 -24
- package/esm/utils/settingsValidation/logger/pluggableLogger.js +0 -28
- package/esm/utils/settingsValidation/mode.js +0 -15
- package/esm/utils/settingsValidation/runtime.js +0 -7
- package/esm/utils/settingsValidation/splitFilters.js +0 -183
- package/esm/utils/settingsValidation/storage/storageCS.js +0 -44
- package/esm/utils/settingsValidation/types.js +0 -1
- package/esm/utils/settingsValidation/url.js +0 -27
- package/esm/utils/time/index.js +0 -7
- package/esm/utils/timeTracker/now/browser.js +0 -12
- package/esm/utils/timeTracker/now/node.js +0 -5
- package/esm/utils/timeTracker/timer.js +0 -6
- package/src/consent/index.ts +0 -8
- package/src/consent/sdkUserConsent.ts +0 -60
- package/src/dtos/types.ts +0 -294
- package/src/evaluator/Engine.ts +0 -73
- package/src/evaluator/combiners/and.ts +0 -29
- package/src/evaluator/combiners/ifelseif.ts +0 -56
- package/src/evaluator/condition/engineUtils.ts +0 -31
- package/src/evaluator/condition/index.ts +0 -50
- package/src/evaluator/convertions/index.ts +0 -7
- package/src/evaluator/index.ts +0 -199
- package/src/evaluator/matchers/all.ts +0 -6
- package/src/evaluator/matchers/between.ts +0 -10
- package/src/evaluator/matchers/boolean.ts +0 -8
- package/src/evaluator/matchers/cont_all.ts +0 -18
- package/src/evaluator/matchers/cont_any.ts +0 -13
- package/src/evaluator/matchers/cont_str.ts +0 -9
- package/src/evaluator/matchers/dependency.ts +0 -32
- package/src/evaluator/matchers/eq.ts +0 -8
- package/src/evaluator/matchers/eq_set.ts +0 -15
- package/src/evaluator/matchers/ew.ts +0 -9
- package/src/evaluator/matchers/gte.ts +0 -8
- package/src/evaluator/matchers/index.ts +0 -70
- package/src/evaluator/matchers/large_segment.ts +0 -11
- package/src/evaluator/matchers/lte.ts +0 -8
- package/src/evaluator/matchers/matcherTypes.ts +0 -42
- package/src/evaluator/matchers/part_of.ts +0 -15
- package/src/evaluator/matchers/prerequisites.ts +0 -24
- package/src/evaluator/matchers/rbsegment.ts +0 -74
- package/src/evaluator/matchers/segment.ts +0 -11
- package/src/evaluator/matchers/semver_between.ts +0 -15
- package/src/evaluator/matchers/semver_eq.ts +0 -13
- package/src/evaluator/matchers/semver_gte.ts +0 -13
- package/src/evaluator/matchers/semver_inlist.ts +0 -16
- package/src/evaluator/matchers/semver_lte.ts +0 -13
- package/src/evaluator/matchers/string.ts +0 -9
- package/src/evaluator/matchers/sw.ts +0 -9
- package/src/evaluator/matchers/whitelist.ts +0 -9
- package/src/evaluator/matchersTransform/index.ts +0 -118
- package/src/evaluator/matchersTransform/segment.ts +0 -10
- package/src/evaluator/matchersTransform/unaryNumeric.ts +0 -8
- package/src/evaluator/matchersTransform/whitelist.ts +0 -8
- package/src/evaluator/parser/index.ts +0 -82
- package/src/evaluator/treatments/index.ts +0 -53
- package/src/evaluator/types.ts +0 -34
- package/src/evaluator/value/index.ts +0 -37
- package/src/evaluator/value/sanitize.ts +0 -106
- package/src/index.ts +0 -14
- package/src/integrations/pluggable.ts +0 -39
- package/src/integrations/types.ts +0 -21
- package/src/listeners/browser.ts +0 -138
- package/src/listeners/node.ts +0 -81
- package/src/listeners/types.ts +0 -4
- package/src/logger/browser/DebugLogger.ts +0 -6
- package/src/logger/browser/ErrorLogger.ts +0 -6
- package/src/logger/browser/InfoLogger.ts +0 -6
- package/src/logger/browser/WarnLogger.ts +0 -6
- package/src/logger/constants.ts +0 -139
- package/src/logger/index.ts +0 -110
- package/src/logger/messages/debug.ts +0 -33
- package/src/logger/messages/error.ts +0 -39
- package/src/logger/messages/info.ts +0 -36
- package/src/logger/messages/warn.ts +0 -40
- package/src/logger/sdkLogger.ts +0 -46
- package/src/logger/types.ts +0 -21
- package/src/readiness/constants.ts +0 -12
- package/src/readiness/readinessManager.ts +0 -170
- package/src/readiness/sdkReadinessManager.ts +0 -121
- package/src/readiness/types.ts +0 -85
- package/src/sdkClient/client.ts +0 -217
- package/src/sdkClient/clientAttributesDecoration.ts +0 -139
- package/src/sdkClient/clientCS.ts +0 -34
- package/src/sdkClient/clientInputValidation.ts +0 -178
- package/src/sdkClient/identity.ts +0 -5
- package/src/sdkClient/sdkClient.ts +0 -77
- package/src/sdkClient/sdkClientMethod.ts +0 -24
- package/src/sdkClient/sdkClientMethodCS.ts +0 -85
- package/src/sdkFactory/index.ts +0 -131
- package/src/sdkFactory/types.ts +0 -119
- package/src/sdkManager/index.ts +0 -114
- package/src/services/decorateHeaders.ts +0 -37
- package/src/services/splitApi.ts +0 -148
- package/src/services/splitHttpClient.ts +0 -84
- package/src/services/types.ts +0 -86
- package/src/storages/AbstractMySegmentsCacheSync.ts +0 -94
- package/src/storages/AbstractSplitsCacheAsync.ts +0 -63
- package/src/storages/AbstractSplitsCacheSync.ts +0 -94
- package/src/storages/KeyBuilder.ts +0 -81
- package/src/storages/KeyBuilderCS.ts +0 -79
- package/src/storages/KeyBuilderSS.ts +0 -74
- package/src/storages/dataLoader.ts +0 -55
- package/src/storages/findLatencyIndex.ts +0 -16
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +0 -87
- package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -137
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +0 -241
- package/src/storages/inLocalStorage/constants.ts +0 -2
- package/src/storages/inLocalStorage/index.ts +0 -104
- package/src/storages/inLocalStorage/storageAdapter.ts +0 -62
- package/src/storages/inLocalStorage/validateCache.ts +0 -99
- package/src/storages/inMemory/AttributesCacheInMemory.ts +0 -74
- package/src/storages/inMemory/EventsCacheInMemory.ts +0 -76
- package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +0 -69
- package/src/storages/inMemory/ImpressionsCacheInMemory.ts +0 -58
- package/src/storages/inMemory/InMemoryStorage.ts +0 -50
- package/src/storages/inMemory/InMemoryStorageCS.ts +0 -69
- package/src/storages/inMemory/MySegmentsCacheInMemory.ts +0 -49
- package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -68
- package/src/storages/inMemory/SegmentsCacheInMemory.ts +0 -74
- package/src/storages/inMemory/SplitsCacheInMemory.ts +0 -130
- package/src/storages/inMemory/TelemetryCacheInMemory.ts +0 -263
- package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +0 -79
- package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +0 -80
- package/src/storages/inRedis/EventsCacheInRedis.ts +0 -75
- package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +0 -95
- package/src/storages/inRedis/ImpressionsCacheInRedis.ts +0 -61
- package/src/storages/inRedis/RBSegmentsCacheInRedis.ts +0 -79
- package/src/storages/inRedis/RedisAdapter.ts +0 -209
- package/src/storages/inRedis/SegmentsCacheInRedis.ts +0 -70
- package/src/storages/inRedis/SplitsCacheInRedis.ts +0 -268
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +0 -144
- package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +0 -75
- package/src/storages/inRedis/constants.ts +0 -4
- package/src/storages/inRedis/index.ts +0 -85
- package/src/storages/package.json +0 -3
- package/src/storages/pluggable/EventsCachePluggable.ts +0 -79
- package/src/storages/pluggable/ImpressionCountsCachePluggable.ts +0 -92
- package/src/storages/pluggable/ImpressionsCachePluggable.ts +0 -63
- package/src/storages/pluggable/RBSegmentsCachePluggable.ts +0 -76
- package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -90
- package/src/storages/pluggable/SplitsCachePluggable.ts +0 -230
- package/src/storages/pluggable/TelemetryCachePluggable.ts +0 -159
- package/src/storages/pluggable/UniqueKeysCachePluggable.ts +0 -67
- package/src/storages/pluggable/constants.ts +0 -1
- package/src/storages/pluggable/inMemoryWrapper.ts +0 -130
- package/src/storages/pluggable/index.ts +0 -152
- package/src/storages/pluggable/wrapperAdapter.ts +0 -58
- package/src/storages/types.ts +0 -538
- package/src/storages/utils.ts +0 -80
- package/src/sync/offline/LocalhostFromObject.ts +0 -6
- package/src/sync/offline/splitsParser/parseCondition.ts +0 -59
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +0 -72
- package/src/sync/offline/splitsParser/types.ts +0 -5
- package/src/sync/offline/syncManagerOffline.ts +0 -66
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +0 -97
- package/src/sync/polling/fetchers/mySegmentsFetcher.ts +0 -25
- package/src/sync/polling/fetchers/segmentChangesFetcher.ts +0 -41
- package/src/sync/polling/fetchers/splitChangesFetcher.ts +0 -85
- package/src/sync/polling/fetchers/types.ts +0 -25
- package/src/sync/polling/pollingManagerCS.ts +0 -116
- package/src/sync/polling/pollingManagerSS.ts +0 -56
- package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +0 -34
- package/src/sync/polling/syncTasks/segmentsSyncTask.ts +0 -30
- package/src/sync/polling/syncTasks/splitsSyncTask.ts +0 -35
- package/src/sync/polling/types.ts +0 -33
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +0 -104
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +0 -92
- package/src/sync/polling/updaters/splitChangesUpdater.ts +0 -220
- package/src/sync/streaming/AuthClient/index.ts +0 -42
- package/src/sync/streaming/AuthClient/types.ts +0 -20
- package/src/sync/streaming/SSEClient/index.ts +0 -103
- package/src/sync/streaming/SSEClient/types.ts +0 -13
- package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +0 -107
- package/src/sync/streaming/SSEHandler/NotificationParser.ts +0 -40
- package/src/sync/streaming/SSEHandler/index.ts +0 -105
- package/src/sync/streaming/SSEHandler/types.ts +0 -73
- package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +0 -134
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +0 -99
- package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +0 -145
- package/src/sync/streaming/UpdateWorkers/constants.ts +0 -3
- package/src/sync/streaming/UpdateWorkers/types.ts +0 -4
- package/src/sync/streaming/constants.ts +0 -44
- package/src/sync/streaming/parseUtils.ts +0 -100
- package/src/sync/streaming/pushManager.ts +0 -358
- package/src/sync/streaming/types.ts +0 -51
- package/src/sync/submitters/eventsSubmitter.ts +0 -35
- package/src/sync/submitters/impressionCountsSubmitter.ts +0 -44
- package/src/sync/submitters/impressionsSubmitter.ts +0 -66
- package/src/sync/submitters/submitter.ts +0 -76
- package/src/sync/submitters/submitterManager.ts +0 -48
- package/src/sync/submitters/telemetrySubmitter.ts +0 -148
- package/src/sync/submitters/types.ts +0 -241
- package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -35
- package/src/sync/syncManagerOnline.ts +0 -195
- package/src/sync/syncTask.ts +0 -83
- package/src/sync/types.ts +0 -48
- package/src/trackers/eventTracker.ts +0 -72
- package/src/trackers/impressionObserver/ImpressionObserver.ts +0 -20
- package/src/trackers/impressionObserver/buildKey.ts +0 -5
- package/src/trackers/impressionObserver/impressionObserverCS.ts +0 -14
- package/src/trackers/impressionObserver/impressionObserverSS.ts +0 -14
- package/src/trackers/impressionObserver/types.ts +0 -5
- package/src/trackers/impressionsTracker.ts +0 -87
- package/src/trackers/strategy/strategyDebug.ts +0 -23
- package/src/trackers/strategy/strategyNone.ts +0 -28
- package/src/trackers/strategy/strategyOptimized.ts +0 -35
- package/src/trackers/telemetryTracker.ts +0 -73
- package/src/trackers/types.ts +0 -86
- package/src/trackers/uniqueKeysTracker.ts +0 -50
- package/src/types.ts +0 -79
- package/src/utils/Backoff.ts +0 -51
- package/src/utils/LRUCache/LinkedList.ts +0 -130
- package/src/utils/LRUCache/index.ts +0 -43
- package/src/utils/MinEventEmitter.ts +0 -102
- package/src/utils/Semver.ts +0 -111
- package/src/utils/base64/index.ts +0 -74
- package/src/utils/constants/index.ts +0 -116
- package/src/utils/decompress/index.ts +0 -429
- package/src/utils/env/isLocalStorageAvailable.ts +0 -32
- package/src/utils/env/isNode.ts +0 -6
- package/src/utils/inputValidation/apiKey.ts +0 -52
- package/src/utils/inputValidation/attribute.ts +0 -21
- package/src/utils/inputValidation/attributes.ts +0 -26
- package/src/utils/inputValidation/event.ts +0 -24
- package/src/utils/inputValidation/eventProperties.ts +0 -78
- package/src/utils/inputValidation/eventValue.ts +0 -11
- package/src/utils/inputValidation/index.ts +0 -14
- package/src/utils/inputValidation/isOperational.ts +0 -17
- package/src/utils/inputValidation/key.ts +0 -51
- package/src/utils/inputValidation/preloadedData.ts +0 -57
- package/src/utils/inputValidation/split.ts +0 -27
- package/src/utils/inputValidation/splitExistence.ts +0 -19
- package/src/utils/inputValidation/splits.ts +0 -21
- package/src/utils/inputValidation/trafficType.ts +0 -27
- package/src/utils/inputValidation/trafficTypeExistence.ts +0 -33
- package/src/utils/jwt/index.ts +0 -16
- package/src/utils/jwt/types.ts +0 -10
- package/src/utils/key/index.ts +0 -34
- package/src/utils/labels/index.ts +0 -9
- package/src/utils/lang/binarySearch.ts +0 -41
- package/src/utils/lang/getFnName.ts +0 -8
- package/src/utils/lang/getGlobal.ts +0 -17
- package/src/utils/lang/index.ts +0 -279
- package/src/utils/lang/objectAssign.ts +0 -25
- package/src/utils/lang/sets.ts +0 -17
- package/src/utils/murmur3/common.ts +0 -54
- package/src/utils/murmur3/legacy.ts +0 -48
- package/src/utils/murmur3/murmur3.ts +0 -74
- package/src/utils/murmur3/murmur3_128.ts +0 -273
- package/src/utils/murmur3/murmur3_128_x86.ts +0 -188
- package/src/utils/murmur3/murmur3_64.ts +0 -36
- package/src/utils/murmur3/utfx.ts +0 -109
- package/src/utils/promise/thenable.ts +0 -4
- package/src/utils/promise/timeout.ts +0 -17
- package/src/utils/promise/wrapper.ts +0 -60
- package/src/utils/settingsValidation/consent.ts +0 -16
- package/src/utils/settingsValidation/impressionsMode.ts +0 -14
- package/src/utils/settingsValidation/index.ts +0 -207
- package/src/utils/settingsValidation/integrations/common.ts +0 -27
- package/src/utils/settingsValidation/integrations/configurable.ts +0 -20
- package/src/utils/settingsValidation/integrations/pluggable.ts +0 -19
- package/src/utils/settingsValidation/logger/builtinLogger.ts +0 -54
- package/src/utils/settingsValidation/logger/commons.ts +0 -24
- package/src/utils/settingsValidation/logger/pluggableLogger.ts +0 -35
- package/src/utils/settingsValidation/mode.ts +0 -17
- package/src/utils/settingsValidation/runtime.ts +0 -9
- package/src/utils/settingsValidation/splitFilters.ts +0 -197
- package/src/utils/settingsValidation/storage/storageCS.ts +0 -52
- package/src/utils/settingsValidation/types.ts +0 -27
- package/src/utils/settingsValidation/url.ts +0 -30
- package/src/utils/time/index.ts +0 -8
- package/src/utils/timeTracker/now/browser.ts +0 -12
- package/src/utils/timeTracker/now/node.ts +0 -6
- package/src/utils/timeTracker/timer.ts +0 -7
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
var _a, _b, _c;
|
|
2
|
-
import { submitterFactory, firstPushWindowDecorator } from './submitter';
|
|
3
|
-
import { 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';
|
|
4
|
-
import { SDK_READY, SDK_READY_FROM_CACHE } from '../../readiness/constants';
|
|
5
|
-
import { base } from '../../utils/settingsValidation';
|
|
6
|
-
import { usedKeysMap } from '../../utils/inputValidation/apiKey';
|
|
7
|
-
import { timer } from '../../utils/timeTracker/timer';
|
|
8
|
-
import { objectAssign } from '../../utils/lang/objectAssign';
|
|
9
|
-
var OPERATION_MODE_MAP = (_a = {},
|
|
10
|
-
_a[STANDALONE_MODE] = STANDALONE_ENUM,
|
|
11
|
-
_a[CONSUMER_MODE] = CONSUMER_ENUM,
|
|
12
|
-
_a[CONSUMER_PARTIAL_MODE] = CONSUMER_PARTIAL_ENUM,
|
|
13
|
-
_a);
|
|
14
|
-
var IMPRESSIONS_MODE_MAP = (_b = {},
|
|
15
|
-
_b[OPTIMIZED] = OPTIMIZED_ENUM,
|
|
16
|
-
_b[DEBUG] = DEBUG_ENUM,
|
|
17
|
-
_b[NONE] = NONE_ENUM,
|
|
18
|
-
_b);
|
|
19
|
-
var USER_CONSENT_MAP = (_c = {},
|
|
20
|
-
_c[CONSENT_UNKNOWN] = 1,
|
|
21
|
-
_c[CONSENT_GRANTED] = 2,
|
|
22
|
-
_c[CONSENT_DECLINED] = 3,
|
|
23
|
-
_c);
|
|
24
|
-
function getActiveFactories() {
|
|
25
|
-
return Object.keys(usedKeysMap).length;
|
|
26
|
-
}
|
|
27
|
-
function getRedundantActiveFactories() {
|
|
28
|
-
return Object.keys(usedKeysMap).reduce(function (acum, sdkKey) {
|
|
29
|
-
return acum + usedKeysMap[sdkKey] - 1;
|
|
30
|
-
}, 0);
|
|
31
|
-
}
|
|
32
|
-
function getTelemetryFlagSetsStats(splitFiltersValidation) {
|
|
33
|
-
// Group every configured flag set in an unique array called originalSets
|
|
34
|
-
var flagSetsTotal = 0;
|
|
35
|
-
splitFiltersValidation.validFilters.forEach(function (filter) {
|
|
36
|
-
if (filter.type === 'bySet')
|
|
37
|
-
flagSetsTotal += filter.values.length;
|
|
38
|
-
});
|
|
39
|
-
var flagSetsValid = splitFiltersValidation.groupedFilters.bySet.length;
|
|
40
|
-
var flagSetsIgnored = flagSetsTotal - flagSetsValid;
|
|
41
|
-
return { flagSetsTotal: flagSetsTotal, flagSetsIgnored: flagSetsIgnored };
|
|
42
|
-
}
|
|
43
|
-
export function getTelemetryConfigStats(mode, storageType) {
|
|
44
|
-
return {
|
|
45
|
-
oM: OPERATION_MODE_MAP[mode],
|
|
46
|
-
st: storageType.toLowerCase(),
|
|
47
|
-
aF: getActiveFactories(),
|
|
48
|
-
rF: getRedundantActiveFactories(),
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Converts data from telemetry cache and settings into /metrics/config request payload.
|
|
53
|
-
*/
|
|
54
|
-
export function telemetryCacheConfigAdapter(telemetry, settings) {
|
|
55
|
-
return {
|
|
56
|
-
isEmpty: function () { return false; },
|
|
57
|
-
clear: function () { },
|
|
58
|
-
pop: function () {
|
|
59
|
-
var urls = settings.urls, scheduler = settings.scheduler;
|
|
60
|
-
var isClientSide = settings.core.key !== undefined;
|
|
61
|
-
var _a = getTelemetryFlagSetsStats(settings.sync.__splitFiltersValidation), flagSetsTotal = _a.flagSetsTotal, flagSetsIgnored = _a.flagSetsIgnored;
|
|
62
|
-
return objectAssign(getTelemetryConfigStats(settings.mode, settings.storage.type), {
|
|
63
|
-
sE: settings.streamingEnabled,
|
|
64
|
-
rR: {
|
|
65
|
-
sp: scheduler.featuresRefreshRate / 1000,
|
|
66
|
-
se: isClientSide ? undefined : scheduler.segmentsRefreshRate / 1000,
|
|
67
|
-
ms: isClientSide ? scheduler.segmentsRefreshRate / 1000 : undefined,
|
|
68
|
-
im: scheduler.impressionsRefreshRate / 1000,
|
|
69
|
-
ev: scheduler.eventsPushRate / 1000,
|
|
70
|
-
te: scheduler.telemetryRefreshRate / 1000,
|
|
71
|
-
},
|
|
72
|
-
uO: {
|
|
73
|
-
s: urls.sdk !== base.urls.sdk,
|
|
74
|
-
e: urls.events !== base.urls.events,
|
|
75
|
-
a: urls.auth !== base.urls.auth,
|
|
76
|
-
st: urls.streaming !== base.urls.streaming,
|
|
77
|
-
t: urls.telemetry !== base.urls.telemetry,
|
|
78
|
-
},
|
|
79
|
-
iQ: scheduler.impressionsQueueSize,
|
|
80
|
-
eQ: scheduler.eventsQueueSize,
|
|
81
|
-
iM: IMPRESSIONS_MODE_MAP[settings.sync.impressionsMode],
|
|
82
|
-
iL: settings.impressionListener ? true : false,
|
|
83
|
-
hP: false,
|
|
84
|
-
tR: telemetry.getTimeUntilReady(),
|
|
85
|
-
tC: telemetry.getTimeUntilReadyFromCache(),
|
|
86
|
-
nR: telemetry.getNonReadyUsage(),
|
|
87
|
-
t: telemetry.popTags(),
|
|
88
|
-
i: settings.integrations && settings.integrations.map(function (int) { return int.type; }),
|
|
89
|
-
uC: settings.userConsent ? USER_CONSENT_MAP[settings.userConsent] : 0,
|
|
90
|
-
fsT: flagSetsTotal,
|
|
91
|
-
fsI: flagSetsIgnored
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Submitter that periodically posts telemetry data
|
|
98
|
-
*/
|
|
99
|
-
export function telemetrySubmitterFactory(params) {
|
|
100
|
-
var telemetry = params.storage.telemetry, now = params.platform.now;
|
|
101
|
-
if (!telemetry || !now)
|
|
102
|
-
return; // No submitter created if telemetry cache is not defined
|
|
103
|
-
var settings = params.settings, _a = params.settings, log = _a.log, telemetryRefreshRate = _a.scheduler.telemetryRefreshRate, splitApi = params.splitApi, readiness = params.readiness, sdkReadinessManager = params.sdkReadinessManager;
|
|
104
|
-
var startTime = timer(now);
|
|
105
|
-
var submitter = firstPushWindowDecorator(submitterFactory(log, splitApi.postMetricsUsage, telemetry, telemetryRefreshRate, 'telemetry stats', undefined, 0, true), telemetryRefreshRate);
|
|
106
|
-
readiness.gate.once(SDK_READY_FROM_CACHE, function () {
|
|
107
|
-
telemetry.recordTimeUntilReadyFromCache(startTime());
|
|
108
|
-
});
|
|
109
|
-
sdkReadinessManager.incInternalReadyCbCount();
|
|
110
|
-
readiness.gate.once(SDK_READY, function () {
|
|
111
|
-
telemetry.recordTimeUntilReady(startTime());
|
|
112
|
-
// Post config data when the SDK is ready and if the telemetry submitter was started
|
|
113
|
-
if (submitter.isRunning()) {
|
|
114
|
-
var postMetricsConfigTask = submitterFactory(log, splitApi.postMetricsConfig, telemetryCacheConfigAdapter(telemetry, settings), 0, 'telemetry config', undefined, 0, true);
|
|
115
|
-
postMetricsConfigTask.execute();
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
return submitter;
|
|
119
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { SUBMITTERS_PUSH_FULL_QUEUE } from '../../logger/constants';
|
|
2
|
-
import { submitterFactory } from './submitter';
|
|
3
|
-
var DATA_NAME = 'unique keys';
|
|
4
|
-
var UNIQUE_KEYS_RATE = 900000; // 15 minutes
|
|
5
|
-
/**
|
|
6
|
-
* Submitter that periodically posts impression counts
|
|
7
|
-
*/
|
|
8
|
-
export function uniqueKeysSubmitterFactory(params) {
|
|
9
|
-
var _a = params.settings, log = _a.log, key = _a.core.key, _b = params.splitApi, postUniqueKeysBulkCs = _b.postUniqueKeysBulkCs, postUniqueKeysBulkSs = _b.postUniqueKeysBulkSs, uniqueKeys = params.storage.uniqueKeys;
|
|
10
|
-
var isClientSide = key !== undefined;
|
|
11
|
-
var postUniqueKeysBulk = isClientSide ? postUniqueKeysBulkCs : postUniqueKeysBulkSs;
|
|
12
|
-
var syncTask = submitterFactory(log, postUniqueKeysBulk, uniqueKeys, UNIQUE_KEYS_RATE, DATA_NAME);
|
|
13
|
-
// register unique keys submitter to be executed when uniqueKeys cache is full
|
|
14
|
-
uniqueKeys.setOnFullQueueCb(function () {
|
|
15
|
-
if (syncTask.isRunning()) {
|
|
16
|
-
log.info(SUBMITTERS_PUSH_FULL_QUEUE, [DATA_NAME]);
|
|
17
|
-
syncTask.execute();
|
|
18
|
-
}
|
|
19
|
-
// If submitter is stopped (e.g., user consent declined or unknown, or app state offline), we don't send the data.
|
|
20
|
-
// Data will be sent when submitter is resumed.
|
|
21
|
-
});
|
|
22
|
-
return syncTask;
|
|
23
|
-
}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { submitterManagerFactory } from './submitters/submitterManager';
|
|
2
|
-
import { PUSH_SUBSYSTEM_UP, PUSH_SUBSYSTEM_DOWN } from './streaming/constants';
|
|
3
|
-
import { SYNC_START_POLLING, SYNC_CONTINUE_POLLING, SYNC_STOP_POLLING } from '../logger/constants';
|
|
4
|
-
import { isConsentGranted } from '../consent';
|
|
5
|
-
import { POLLING, STREAMING, SYNC_MODE_UPDATE } from '../utils/constants';
|
|
6
|
-
import { SDK_SPLITS_CACHE_LOADED } from '../readiness/constants';
|
|
7
|
-
import { usesSegmentsSync } from '../storages/AbstractSplitsCacheSync';
|
|
8
|
-
/**
|
|
9
|
-
* Online SyncManager factory.
|
|
10
|
-
* Can be used for server-side API, and client-side API with or without multiple clients.
|
|
11
|
-
*
|
|
12
|
-
* @param pollingManagerFactory - allows to specialize the SyncManager for server-side or client-side API by passing
|
|
13
|
-
* `pollingManagerSSFactory` or `pollingManagerCSFactory` respectively.
|
|
14
|
-
* @param pushManagerFactory - optional to build a SyncManager with or without streaming support
|
|
15
|
-
*/
|
|
16
|
-
export function syncManagerOnlineFactory(pollingManagerFactory, pushManagerFactory) {
|
|
17
|
-
/**
|
|
18
|
-
* SyncManager factory for modular SDK
|
|
19
|
-
*/
|
|
20
|
-
return function (params) {
|
|
21
|
-
var settings = params.settings, _a = params.settings, log = _a.log, streamingEnabled = _a.streamingEnabled, syncEnabled = _a.sync.enabled, telemetryTracker = params.telemetryTracker, storage = params.storage, readiness = params.readiness;
|
|
22
|
-
/** Polling Manager */
|
|
23
|
-
var pollingManager = pollingManagerFactory && pollingManagerFactory(params);
|
|
24
|
-
/** Push Manager */
|
|
25
|
-
var pushManager = syncEnabled && streamingEnabled && pollingManager && pushManagerFactory ?
|
|
26
|
-
pushManagerFactory(params, pollingManager) :
|
|
27
|
-
undefined;
|
|
28
|
-
/** Submitter Manager */
|
|
29
|
-
// It is not inyected as push and polling managers, because at the moment it is required
|
|
30
|
-
var submitterManager = submitterManagerFactory(params);
|
|
31
|
-
/** Sync Manager logic */
|
|
32
|
-
function startPolling() {
|
|
33
|
-
if (pollingManager.isRunning()) {
|
|
34
|
-
log.info(SYNC_CONTINUE_POLLING);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
log.info(SYNC_START_POLLING);
|
|
38
|
-
pollingManager.start();
|
|
39
|
-
telemetryTracker.streamingEvent(SYNC_MODE_UPDATE, POLLING);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function stopPollingAndSyncAll() {
|
|
43
|
-
log.info(SYNC_STOP_POLLING);
|
|
44
|
-
// if polling, stop
|
|
45
|
-
if (pollingManager.isRunning()) {
|
|
46
|
-
pollingManager.stop();
|
|
47
|
-
telemetryTracker.streamingEvent(SYNC_MODE_UPDATE, STREAMING);
|
|
48
|
-
}
|
|
49
|
-
// fetch splits and segments. There is no need to catch this promise (it is always resolved)
|
|
50
|
-
pollingManager.syncAll();
|
|
51
|
-
}
|
|
52
|
-
if (pushManager) {
|
|
53
|
-
pushManager.on(PUSH_SUBSYSTEM_UP, stopPollingAndSyncAll);
|
|
54
|
-
pushManager.on(PUSH_SUBSYSTEM_DOWN, startPolling);
|
|
55
|
-
}
|
|
56
|
-
var running = false; // flag that indicates whether the syncManager has been started (true) or stopped (false)
|
|
57
|
-
var startFirstTime = true; // flag to distinguish calling the `start` method for the first time, to support pausing and resuming the synchronization
|
|
58
|
-
return {
|
|
59
|
-
// Exposed for fine-grained control of synchronization.
|
|
60
|
-
// E.g.: user consent, app state changes (Page hide, Foreground/Background, Online/Offline).
|
|
61
|
-
pollingManager: pollingManager,
|
|
62
|
-
pushManager: pushManager,
|
|
63
|
-
submitterManager: submitterManager,
|
|
64
|
-
/**
|
|
65
|
-
* Method used to start the syncManager for the first time, or resume it after being stopped.
|
|
66
|
-
*/
|
|
67
|
-
start: function () {
|
|
68
|
-
running = true;
|
|
69
|
-
// @TODO once event, impression and telemetry storages support persistence, call when `validateCache` promise is resolved
|
|
70
|
-
submitterManager.start(!isConsentGranted(settings));
|
|
71
|
-
return Promise.resolve(storage.validateCache ? storage.validateCache() : false).then(function (isCacheLoaded) {
|
|
72
|
-
if (!running)
|
|
73
|
-
return;
|
|
74
|
-
if (startFirstTime) {
|
|
75
|
-
// Emits SDK_READY_FROM_CACHE
|
|
76
|
-
if (isCacheLoaded)
|
|
77
|
-
readiness.splits.emit(SDK_SPLITS_CACHE_LOADED);
|
|
78
|
-
}
|
|
79
|
-
// start syncing splits and segments
|
|
80
|
-
if (pollingManager) {
|
|
81
|
-
// If synchronization is disabled pushManager and pollingManager should not start
|
|
82
|
-
if (syncEnabled) {
|
|
83
|
-
if (pushManager) {
|
|
84
|
-
// Doesn't call `syncAll` when the syncManager is resuming
|
|
85
|
-
if (startFirstTime) {
|
|
86
|
-
pollingManager.syncAll();
|
|
87
|
-
}
|
|
88
|
-
pushManager.start();
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
pollingManager.start();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
if (startFirstTime) {
|
|
96
|
-
pollingManager.syncAll();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
startFirstTime = false;
|
|
101
|
-
});
|
|
102
|
-
},
|
|
103
|
-
/**
|
|
104
|
-
* Method used to stop/pause the syncManager.
|
|
105
|
-
*/
|
|
106
|
-
stop: function () {
|
|
107
|
-
running = false;
|
|
108
|
-
// stop syncing
|
|
109
|
-
if (pushManager)
|
|
110
|
-
pushManager.stop();
|
|
111
|
-
if (pollingManager && pollingManager.isRunning())
|
|
112
|
-
pollingManager.stop();
|
|
113
|
-
// stop periodic data recording (events, impressions, telemetry).
|
|
114
|
-
submitterManager.stop();
|
|
115
|
-
},
|
|
116
|
-
isRunning: function () {
|
|
117
|
-
return running;
|
|
118
|
-
},
|
|
119
|
-
flush: function () {
|
|
120
|
-
return submitterManager.execute(!isConsentGranted(settings));
|
|
121
|
-
},
|
|
122
|
-
// [Only used for client-side]
|
|
123
|
-
// If polling and push managers are defined (standalone mode), they implement the interfaces for client-side
|
|
124
|
-
shared: function (matchingKey, readinessManager, storage) {
|
|
125
|
-
if (!pollingManager)
|
|
126
|
-
return;
|
|
127
|
-
var mySegmentsSyncTask = pollingManager.add(matchingKey, readinessManager, storage);
|
|
128
|
-
if (syncEnabled && pushManager)
|
|
129
|
-
pushManager.add(matchingKey, mySegmentsSyncTask);
|
|
130
|
-
if (running) {
|
|
131
|
-
if (syncEnabled) {
|
|
132
|
-
if (pushManager) {
|
|
133
|
-
if (pollingManager.isRunning()) {
|
|
134
|
-
// if doing polling, we must start the periodic fetch of data
|
|
135
|
-
if (usesSegmentsSync(storage))
|
|
136
|
-
mySegmentsSyncTask.start();
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
// if not polling, we must execute the sync task for the initial fetch
|
|
140
|
-
// of segments since `syncAll` was already executed when starting the main client
|
|
141
|
-
mySegmentsSyncTask.execute();
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
if (usesSegmentsSync(storage))
|
|
146
|
-
mySegmentsSyncTask.start();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
if (!readinessManager.isReady())
|
|
151
|
-
mySegmentsSyncTask.execute();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return {
|
|
155
|
-
stop: function () {
|
|
156
|
-
// check in case `client.destroy()` has been invoked more than once for the same client
|
|
157
|
-
var mySegmentsSyncTask = pollingManager.get(matchingKey);
|
|
158
|
-
if (mySegmentsSyncTask) {
|
|
159
|
-
// stop syncing
|
|
160
|
-
if (pushManager)
|
|
161
|
-
pushManager.remove(matchingKey);
|
|
162
|
-
if (mySegmentsSyncTask.isRunning())
|
|
163
|
-
mySegmentsSyncTask.stop();
|
|
164
|
-
pollingManager.remove(matchingKey);
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
flush: function () { return Promise.resolve(); }
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
};
|
|
172
|
-
}
|
package/esm/sync/syncTask.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { SYNC_TASK_EXECUTE, SYNC_TASK_START, SYNC_TASK_STOP } from '../logger/constants';
|
|
2
|
-
/**
|
|
3
|
-
* Creates an object that handles the periodic execution of a given task via "start" and "stop" methods.
|
|
4
|
-
* The task can be also executed by calling the "execute" method. Multiple calls run sequentially to avoid race conditions (e.g., submitters executed on SDK destroy or full queue, while periodic execution is pending).
|
|
5
|
-
*
|
|
6
|
-
* @param log - Logger instance.
|
|
7
|
-
* @param task - Task to execute that returns a promise that NEVER REJECTS. Otherwise, periodic execution can result in Unhandled Promise Rejections.
|
|
8
|
-
* @param period - Period in milliseconds to execute the task.
|
|
9
|
-
* @param taskName - Optional task name for logging.
|
|
10
|
-
* @returns A sync task that wraps the given task.
|
|
11
|
-
*/
|
|
12
|
-
export function syncTaskFactory(log, task, period, taskName) {
|
|
13
|
-
if (taskName === void 0) { taskName = 'task'; }
|
|
14
|
-
// Flag that indicates if the task is executing
|
|
15
|
-
var executing = 0;
|
|
16
|
-
// Promise chain to resolve tasks sequentially
|
|
17
|
-
var promiseChain;
|
|
18
|
-
// flag that indicates if the task periodic execution has been started/stopped.
|
|
19
|
-
var running = false;
|
|
20
|
-
// Auxiliar counter used to avoid race condition when calling `start` & `stop` intermittently
|
|
21
|
-
var runningId = 0;
|
|
22
|
-
// Params passed to `task` when called periodically
|
|
23
|
-
var runningArgs;
|
|
24
|
-
// Id of the periodic call timeout
|
|
25
|
-
var timeoutID;
|
|
26
|
-
function execute() {
|
|
27
|
-
var args = [];
|
|
28
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
29
|
-
args[_i] = arguments[_i];
|
|
30
|
-
}
|
|
31
|
-
executing++;
|
|
32
|
-
log.debug(SYNC_TASK_EXECUTE, [taskName]);
|
|
33
|
-
// Update `promiseChain` with last promise, to run tasks serially
|
|
34
|
-
promiseChain = (promiseChain ? promiseChain.then(function () { return task.apply(void 0, args); }) : task.apply(void 0, args))
|
|
35
|
-
.then(function (result) {
|
|
36
|
-
executing--;
|
|
37
|
-
return result;
|
|
38
|
-
});
|
|
39
|
-
return promiseChain;
|
|
40
|
-
}
|
|
41
|
-
function periodicExecute(currentRunningId) {
|
|
42
|
-
return execute.apply(void 0, runningArgs).then(function (result) {
|
|
43
|
-
// Call `setTimeout` if periodic execution was started and `currentRunningId === runningId`
|
|
44
|
-
// to avoid a race condition when calling `start`, `stop` and `start` again
|
|
45
|
-
if (running && currentRunningId === runningId)
|
|
46
|
-
timeoutID = setTimeout(periodicExecute, period, currentRunningId);
|
|
47
|
-
return result;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
execute: execute,
|
|
52
|
-
isExecuting: function () {
|
|
53
|
-
return executing > 0;
|
|
54
|
-
},
|
|
55
|
-
start: function () {
|
|
56
|
-
var args = [];
|
|
57
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
58
|
-
args[_i] = arguments[_i];
|
|
59
|
-
}
|
|
60
|
-
if (!running) {
|
|
61
|
-
running = true;
|
|
62
|
-
runningId++;
|
|
63
|
-
runningArgs = args;
|
|
64
|
-
log.debug(SYNC_TASK_START, [taskName, period]);
|
|
65
|
-
return periodicExecute(runningId);
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
stop: function () {
|
|
69
|
-
if (running) {
|
|
70
|
-
running = false;
|
|
71
|
-
log.debug(SYNC_TASK_STOP, [taskName]);
|
|
72
|
-
clearTimeout(timeoutID);
|
|
73
|
-
timeoutID = undefined;
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
isRunning: function () {
|
|
77
|
-
return running;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
package/esm/sync/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
import { thenable } from '../utils/promise/thenable';
|
|
3
|
-
import { EVENTS_TRACKER_SUCCESS, ERROR_EVENTS_TRACKER } from '../logger/constants';
|
|
4
|
-
import { CONSENT_DECLINED, DROPPED, QUEUED } from '../utils/constants';
|
|
5
|
-
import { isConsumerMode } from '../utils/settingsValidation/mode';
|
|
6
|
-
/**
|
|
7
|
-
* Event tracker stores events in cache and pass them to the integrations manager if provided.
|
|
8
|
-
*
|
|
9
|
-
* @param eventsCache - cache to save events
|
|
10
|
-
* @param integrationsManager - optional event handler used for integrations
|
|
11
|
-
*/
|
|
12
|
-
export function eventTrackerFactory(settings, eventsCache, whenInit, integrationsManager, telemetryCache) {
|
|
13
|
-
var log = settings.log, mode = settings.mode;
|
|
14
|
-
var isAsync = isConsumerMode(mode);
|
|
15
|
-
function queueEventsCallback(eventData, tracked) {
|
|
16
|
-
var eventTypeId = eventData.eventTypeId, trafficTypeName = eventData.trafficTypeName, key = eventData.key, value = eventData.value, timestamp = eventData.timestamp, properties = eventData.properties;
|
|
17
|
-
// Logging every prop would be too much.
|
|
18
|
-
var msg = "event of type \"" + eventTypeId + "\" for traffic type \"" + trafficTypeName + "\". Key: " + key + ". Value: " + value + ". Timestamp: " + timestamp + ". " + (properties ? 'With properties.' : 'With no properties.');
|
|
19
|
-
if (tracked) {
|
|
20
|
-
log.info(EVENTS_TRACKER_SUCCESS, [msg]);
|
|
21
|
-
if (integrationsManager) {
|
|
22
|
-
whenInit(function () {
|
|
23
|
-
// Wrap in a timeout because we don't want it to be blocking.
|
|
24
|
-
setTimeout(function () {
|
|
25
|
-
// copy of event, to avoid unexpected behavior if modified by integrations
|
|
26
|
-
var eventDataCopy = objectAssign({}, eventData);
|
|
27
|
-
if (properties)
|
|
28
|
-
eventDataCopy.properties = objectAssign({}, properties);
|
|
29
|
-
// integrationsManager does not throw errors (they are internally handled by each integration module)
|
|
30
|
-
integrationsManager.handleEvent(eventDataCopy);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
log.error(ERROR_EVENTS_TRACKER, [msg]);
|
|
37
|
-
}
|
|
38
|
-
return tracked;
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
track: function (eventData, size) {
|
|
42
|
-
if (settings.userConsent === CONSENT_DECLINED) {
|
|
43
|
-
return isAsync ? Promise.resolve(false) : false;
|
|
44
|
-
}
|
|
45
|
-
var tracked = eventsCache.track(eventData, size);
|
|
46
|
-
if (thenable(tracked)) {
|
|
47
|
-
return tracked.then(queueEventsCallback.bind(null, eventData));
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
// Record when eventsCache is sync only (standalone mode)
|
|
51
|
-
// @TODO we are not dropping events on full queue yet, so `tracked` is always true ATM
|
|
52
|
-
if (telemetryCache)
|
|
53
|
-
telemetryCache.recordEventStats(tracked ? QUEUED : DROPPED, 1);
|
|
54
|
-
return queueEventsCallback(eventData, tracked);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LRUCache } from '../../utils/LRUCache';
|
|
2
|
-
var ImpressionObserver = /** @class */ (function () {
|
|
3
|
-
function ImpressionObserver(size, hasher) {
|
|
4
|
-
this.cache = new LRUCache(size);
|
|
5
|
-
this.hasher = hasher;
|
|
6
|
-
}
|
|
7
|
-
ImpressionObserver.prototype.testAndSet = function (impression) {
|
|
8
|
-
var hash = this.hasher(impression);
|
|
9
|
-
var previous = this.cache.get(hash);
|
|
10
|
-
this.cache.set(hash, impression.time);
|
|
11
|
-
return previous;
|
|
12
|
-
};
|
|
13
|
-
return ImpressionObserver;
|
|
14
|
-
}());
|
|
15
|
-
export { ImpressionObserver };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ImpressionObserver } from './ImpressionObserver';
|
|
2
|
-
import { hash } from '../../utils/murmur3/murmur3';
|
|
3
|
-
import { buildKey } from './buildKey';
|
|
4
|
-
export function hashImpression32(impression) {
|
|
5
|
-
return hash(buildKey(impression));
|
|
6
|
-
}
|
|
7
|
-
var LAST_SEEN_CACHE_SIZE = 500; // cache up to 500 impression hashes
|
|
8
|
-
export function impressionObserverCSFactory() {
|
|
9
|
-
return new ImpressionObserver(LAST_SEEN_CACHE_SIZE, hashImpression32);
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ImpressionObserver } from './ImpressionObserver';
|
|
2
|
-
import { hash128 } from '../../utils/murmur3/murmur3_128_x86';
|
|
3
|
-
import { buildKey } from './buildKey';
|
|
4
|
-
export function hashImpression128(impression) {
|
|
5
|
-
return hash128(buildKey(impression));
|
|
6
|
-
}
|
|
7
|
-
var LAST_SEEN_CACHE_SIZE = 500000; // cache up to 500k impression hashes
|
|
8
|
-
export function impressionObserverSSFactory() {
|
|
9
|
-
return new ImpressionObserver(LAST_SEEN_CACHE_SIZE, hashImpression128);
|
|
10
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
import { thenable } from '../utils/promise/thenable';
|
|
3
|
-
import { IMPRESSIONS_TRACKER_SUCCESS, ERROR_IMPRESSIONS_TRACKER, ERROR_IMPRESSIONS_LISTENER } from '../logger/constants';
|
|
4
|
-
import { CONSENT_DECLINED, DEDUPED, QUEUED } from '../utils/constants';
|
|
5
|
-
/**
|
|
6
|
-
* Impressions tracker stores impressions in cache and pass them to the listener and integrations manager if provided.
|
|
7
|
-
*/
|
|
8
|
-
export function impressionsTrackerFactory(settings, impressionsCache, noneStrategy, strategy, whenInit, integrationsManager, telemetryCache) {
|
|
9
|
-
var log = settings.log, impressionListener = settings.impressionListener, _a = settings.runtime, ip = _a.ip, hostname = _a.hostname, version = settings.version;
|
|
10
|
-
return {
|
|
11
|
-
track: function (impressions, attributes) {
|
|
12
|
-
if (settings.userConsent === CONSENT_DECLINED)
|
|
13
|
-
return;
|
|
14
|
-
var impressionsToStore = impressions.filter(function (_a) {
|
|
15
|
-
var imp = _a.imp, disabled = _a.disabled;
|
|
16
|
-
return disabled ?
|
|
17
|
-
noneStrategy.process(imp) :
|
|
18
|
-
strategy.process(imp);
|
|
19
|
-
});
|
|
20
|
-
var impressionsLength = impressions.length;
|
|
21
|
-
var impressionsToStoreLength = impressionsToStore.length;
|
|
22
|
-
if (impressionsToStoreLength) {
|
|
23
|
-
var res = impressionsCache.track(impressionsToStore.map(function (item) { return item.imp; }));
|
|
24
|
-
// If we're on an async storage, handle error and log it.
|
|
25
|
-
if (thenable(res)) {
|
|
26
|
-
res.then(function () {
|
|
27
|
-
log.info(IMPRESSIONS_TRACKER_SUCCESS, [impressionsLength]);
|
|
28
|
-
}).catch(function (err) {
|
|
29
|
-
log.error(ERROR_IMPRESSIONS_TRACKER, [impressionsLength, err]);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
// Record when impressionsCache is sync only (standalone mode)
|
|
34
|
-
// @TODO we are not dropping impressions on full queue yet, so DROPPED stats are not recorded
|
|
35
|
-
if (telemetryCache) {
|
|
36
|
-
telemetryCache.recordImpressionStats(QUEUED, impressionsToStoreLength);
|
|
37
|
-
telemetryCache.recordImpressionStats(DEDUPED, impressionsLength - impressionsToStoreLength);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
// @TODO next block might be handled by the integration manager. In that case, the metadata object doesn't need to be passed in the constructor
|
|
42
|
-
if (impressionListener || integrationsManager) {
|
|
43
|
-
var _loop_1 = function (i) {
|
|
44
|
-
var impressionData = {
|
|
45
|
-
// copy of impression, to avoid unexpected behavior if modified by integrations or impressionListener
|
|
46
|
-
impression: objectAssign({}, impressions[i].imp),
|
|
47
|
-
attributes: attributes,
|
|
48
|
-
ip: ip,
|
|
49
|
-
hostname: hostname,
|
|
50
|
-
sdkLanguageVersion: version
|
|
51
|
-
};
|
|
52
|
-
whenInit(function () {
|
|
53
|
-
// Wrap in a timeout because we don't want it to be blocking.
|
|
54
|
-
setTimeout(function () {
|
|
55
|
-
// integrationsManager.handleImpression does not throw errors
|
|
56
|
-
if (integrationsManager)
|
|
57
|
-
integrationsManager.handleImpression(impressionData);
|
|
58
|
-
try { // @ts-ignore. An exception on the listeners should not break the SDK.
|
|
59
|
-
if (impressionListener)
|
|
60
|
-
impressionListener.logImpression(impressionData);
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
log.error(ERROR_IMPRESSIONS_LISTENER, [err]);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
for (var i = 0; i < impressionsLength; i++) {
|
|
69
|
-
_loop_1(i);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
|
|
3
|
-
*
|
|
4
|
-
* @param impressionsObserver - impression observer. Previous time (pt property) is included in impression instances
|
|
5
|
-
* @returns Debug strategy
|
|
6
|
-
*/
|
|
7
|
-
export function strategyDebugFactory(impressionsObserver) {
|
|
8
|
-
return {
|
|
9
|
-
process: function (impression) {
|
|
10
|
-
if (impression.properties)
|
|
11
|
-
return true;
|
|
12
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* None strategy for impressions tracker.
|
|
3
|
-
*
|
|
4
|
-
* @param impressionCounts - cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
|
|
5
|
-
* @param uniqueKeysTracker - unique keys tracker in charge of tracking the unique keys per split.
|
|
6
|
-
* @returns None strategy
|
|
7
|
-
*/
|
|
8
|
-
export function strategyNoneFactory(impressionCounts, uniqueKeysTracker) {
|
|
9
|
-
return {
|
|
10
|
-
process: function (impression) {
|
|
11
|
-
var now = Date.now();
|
|
12
|
-
// Increments impression counter per featureName
|
|
13
|
-
impressionCounts.track(impression.feature, now, 1);
|
|
14
|
-
// Keep track by unique key
|
|
15
|
-
uniqueKeysTracker.track(impression.keyName, impression.feature);
|
|
16
|
-
// Do not store impressions
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { truncateTimeFrame } from '../../utils/time';
|
|
2
|
-
/**
|
|
3
|
-
* Optimized strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
|
|
4
|
-
*
|
|
5
|
-
* @param impressionsObserver - impression observer. previous time (pt property) is included in impression instances
|
|
6
|
-
* @param impressionCounts - cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
|
|
7
|
-
* @returns Optimized strategy
|
|
8
|
-
*/
|
|
9
|
-
export function strategyOptimizedFactory(impressionsObserver, impressionCounts) {
|
|
10
|
-
return {
|
|
11
|
-
process: function (impression) {
|
|
12
|
-
// DEBUG mode without previous time, for impressions with properties
|
|
13
|
-
if (impression.properties)
|
|
14
|
-
return true;
|
|
15
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
16
|
-
var now = Date.now();
|
|
17
|
-
// Increments impression counter per featureName
|
|
18
|
-
if (impression.pt)
|
|
19
|
-
impressionCounts.track(impression.feature, now, 1);
|
|
20
|
-
// Checks if the impression should be added in queue to be sent
|
|
21
|
-
return (!impression.pt || impression.pt < truncateTimeFrame(now)) ? true : false;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
}
|