@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,241 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-use-before-define */
|
|
2
|
-
import { IMetadata } from '../../dtos/types';
|
|
3
|
-
import SplitIO from '../../../types/splitio';
|
|
4
|
-
import { ISyncTask } from '../types';
|
|
5
|
-
|
|
6
|
-
type ImpressionPayload = {
|
|
7
|
-
/** Matching Key */
|
|
8
|
-
k: string;
|
|
9
|
-
/** Bucketing Key */
|
|
10
|
-
b?: string;
|
|
11
|
-
/** Treatment */
|
|
12
|
-
t: string;
|
|
13
|
-
/** Timestamp */
|
|
14
|
-
m: number;
|
|
15
|
-
/** Change number */
|
|
16
|
-
c: number;
|
|
17
|
-
/** Rule label */
|
|
18
|
-
r?: string;
|
|
19
|
-
/** Previous time */
|
|
20
|
-
pt?: number;
|
|
21
|
-
/** Stringified JSON object with properties */
|
|
22
|
-
properties?: string;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export type ImpressionsPayload = {
|
|
26
|
-
/** Split name */
|
|
27
|
-
f: string,
|
|
28
|
-
/** Key Impressions */
|
|
29
|
-
i: ImpressionPayload[]
|
|
30
|
-
}[]
|
|
31
|
-
|
|
32
|
-
export type ImpressionCountsPayload = {
|
|
33
|
-
pf: {
|
|
34
|
-
/** Split name */
|
|
35
|
-
f: string
|
|
36
|
-
/** Time Frame */
|
|
37
|
-
m: number
|
|
38
|
-
/** Count */
|
|
39
|
-
rc: number
|
|
40
|
-
}[]
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type UniqueKeysItemSs = {
|
|
44
|
-
/** Split name */
|
|
45
|
-
f: string
|
|
46
|
-
/** keyNames */
|
|
47
|
-
ks: string[]
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export type UniqueKeysPayloadSs = {
|
|
51
|
-
keys: UniqueKeysItemSs[]
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export type UniqueKeysPayloadCs = {
|
|
55
|
-
keys: {
|
|
56
|
-
/** keyNames */
|
|
57
|
-
k: string
|
|
58
|
-
/** Split name */
|
|
59
|
-
fs: string[]
|
|
60
|
-
}[]
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export type StoredImpressionWithMetadata = {
|
|
64
|
-
/** Metadata */
|
|
65
|
-
m: IMetadata,
|
|
66
|
-
/** Stored impression */
|
|
67
|
-
i: ImpressionPayload & {
|
|
68
|
-
/** Feature flag name */
|
|
69
|
-
f: string
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export type StoredEventWithMetadata = {
|
|
74
|
-
/** Metadata */
|
|
75
|
-
m: IMetadata,
|
|
76
|
-
/** Stored event */
|
|
77
|
-
e: SplitIO.EventData
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export type MultiMethodLatencies = Map<string, MethodLatencies>
|
|
81
|
-
|
|
82
|
-
export type MultiMethodExceptions = Map<string, MethodExceptions>
|
|
83
|
-
|
|
84
|
-
export type MultiConfigs = Map<string, TelemetryConfigStats>
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Telemetry usage stats
|
|
88
|
-
*/
|
|
89
|
-
|
|
90
|
-
export type QUEUED = 0;
|
|
91
|
-
export type DROPPED = 1;
|
|
92
|
-
export type DEDUPED = 2;
|
|
93
|
-
export type ImpressionDataType = QUEUED | DROPPED | DEDUPED
|
|
94
|
-
export type EventDataType = QUEUED | DROPPED;
|
|
95
|
-
export type UpdatesFromSSEEnum = SPLITS | MEMBERSHIPS;
|
|
96
|
-
|
|
97
|
-
export type SPLITS = 'sp';
|
|
98
|
-
export type IMPRESSIONS = 'im';
|
|
99
|
-
export type IMPRESSIONS_COUNT = 'ic';
|
|
100
|
-
export type EVENTS = 'ev';
|
|
101
|
-
export type TELEMETRY = 'te';
|
|
102
|
-
export type TOKEN = 'to';
|
|
103
|
-
export type SEGMENT = 'se';
|
|
104
|
-
export type MEMBERSHIPS = 'ms';
|
|
105
|
-
export type OperationType = SPLITS | IMPRESSIONS | IMPRESSIONS_COUNT | EVENTS | TELEMETRY | TOKEN | SEGMENT | MEMBERSHIPS;
|
|
106
|
-
|
|
107
|
-
export type LastSync = Partial<Record<OperationType, number | undefined>>
|
|
108
|
-
export type HttpErrors = Partial<Record<OperationType, { [statusCode: string]: number }>>
|
|
109
|
-
export type HttpLatencies = Partial<Record<OperationType, Array<number>>>
|
|
110
|
-
|
|
111
|
-
export type TREATMENT = 't';
|
|
112
|
-
export type TREATMENTS = 'ts';
|
|
113
|
-
export type TREATMENT_WITH_CONFIG = 'tc';
|
|
114
|
-
export type TREATMENTS_WITH_CONFIG = 'tcs';
|
|
115
|
-
export type TRACK = 'tr';
|
|
116
|
-
export type TREATMENTS_BY_FLAGSET = 'tf'
|
|
117
|
-
export type TREATMENTS_BY_FLAGSETS = 'tfs'
|
|
118
|
-
export type TREATMENTS_WITH_CONFIG_BY_FLAGSET = 'tcf'
|
|
119
|
-
export type TREATMENTS_WITH_CONFIG_BY_FLAGSETS = 'tcfs'
|
|
120
|
-
export type Method = TREATMENT | TREATMENTS | TREATMENT_WITH_CONFIG | TREATMENTS_WITH_CONFIG | TRACK | TREATMENTS_BY_FLAGSET | TREATMENTS_BY_FLAGSETS | TREATMENTS_WITH_CONFIG_BY_FLAGSET | TREATMENTS_WITH_CONFIG_BY_FLAGSETS;
|
|
121
|
-
|
|
122
|
-
export type MethodLatencies = Partial<Record<Method, Array<number>>>;
|
|
123
|
-
|
|
124
|
-
export type MethodExceptions = Partial<Record<Method, number>>;
|
|
125
|
-
|
|
126
|
-
export type CONNECTION_ESTABLISHED = 0;
|
|
127
|
-
export type OCCUPANCY_PRI = 10;
|
|
128
|
-
export type OCCUPANCY_SEC = 20;
|
|
129
|
-
export type STREAMING_STATUS = 30;
|
|
130
|
-
export type SSE_CONNECTION_ERROR = 40;
|
|
131
|
-
export type TOKEN_REFRESH = 50;
|
|
132
|
-
export type ABLY_ERROR = 60;
|
|
133
|
-
export type SYNC_MODE_UPDATE = 70;
|
|
134
|
-
export type StreamingEventType = CONNECTION_ESTABLISHED | OCCUPANCY_PRI | OCCUPANCY_SEC | STREAMING_STATUS | SSE_CONNECTION_ERROR | TOKEN_REFRESH | ABLY_ERROR | SYNC_MODE_UPDATE;
|
|
135
|
-
|
|
136
|
-
export type StreamingEvent = {
|
|
137
|
-
e: StreamingEventType, // eventType
|
|
138
|
-
d?: number, // eventData
|
|
139
|
-
t: number, // timestamp
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// 'telemetry.latencias' and 'telemetry.exceptions' Redis/Pluggable keys
|
|
143
|
-
export type TelemetryUsageStats = {
|
|
144
|
-
mL?: MethodLatencies, // clientMethodLatencies
|
|
145
|
-
mE?: MethodExceptions, // methodExceptions
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// amount of instant updates that we are doing by avoiding fetching to Split servers
|
|
149
|
-
export type UpdatesFromSSE = {
|
|
150
|
-
sp?: number, // splits
|
|
151
|
-
ms?: number, // my segments
|
|
152
|
-
mls?: number // my large segments
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// 'metrics/usage' JSON request body
|
|
156
|
-
export type TelemetryUsageStatsPayload = TelemetryUsageStats & {
|
|
157
|
-
lS: LastSync, // lastSynchronization
|
|
158
|
-
hE: HttpErrors, // httpErrors
|
|
159
|
-
hL: HttpLatencies, // httpLatencies
|
|
160
|
-
tR: number, // tokenRefreshes
|
|
161
|
-
aR: number, // authRejections
|
|
162
|
-
iQ: number, // impressionsQueued
|
|
163
|
-
iDe: number, // impressionsDeduped
|
|
164
|
-
iDr: number, // impressionsDropped
|
|
165
|
-
spC?: number, // splitCount
|
|
166
|
-
seC?: number, // segmentCount
|
|
167
|
-
skC?: number, // segmentKeyCount
|
|
168
|
-
lsC?: number, // largeSegmentCount
|
|
169
|
-
lskC?: number, // largeSegmentKeyCount
|
|
170
|
-
sL?: number, // sessionLengthMs
|
|
171
|
-
eQ: number, // eventsQueued
|
|
172
|
-
eD: number, // eventsDropped
|
|
173
|
-
sE: Array<StreamingEvent>, // streamingEvents
|
|
174
|
-
t?: Array<string>, // tags
|
|
175
|
-
ufs?: UpdatesFromSSE, // instant updates
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Telemetry config stats
|
|
180
|
-
*/
|
|
181
|
-
|
|
182
|
-
export type STANDALONE_ENUM = 0;
|
|
183
|
-
export type CONSUMER_ENUM = 1;
|
|
184
|
-
export type CONSUMER_PARTIAL_ENUM = 2;
|
|
185
|
-
export type OperationMode = STANDALONE_ENUM | CONSUMER_ENUM | CONSUMER_PARTIAL_ENUM
|
|
186
|
-
|
|
187
|
-
export type OPTIMIZED_ENUM = 0;
|
|
188
|
-
export type DEBUG_ENUM = 1;
|
|
189
|
-
export type NONE_ENUM = 2;
|
|
190
|
-
export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM | NONE_ENUM;
|
|
191
|
-
|
|
192
|
-
export type RefreshRates = {
|
|
193
|
-
sp: number, // splits
|
|
194
|
-
se?: number, // segments
|
|
195
|
-
ms?: number, // mySegments
|
|
196
|
-
im: number, // impressions
|
|
197
|
-
ev: number, // events
|
|
198
|
-
te: number, // telemetry
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
export type UrlOverrides = {
|
|
202
|
-
s: boolean, // sdkUrl
|
|
203
|
-
e: boolean, // events
|
|
204
|
-
a: boolean, // auth
|
|
205
|
-
st: boolean, // stream
|
|
206
|
-
t: boolean, // telemetry
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// 'telemetry.init' Redis/Pluggable key
|
|
210
|
-
export type TelemetryConfigStats = {
|
|
211
|
-
oM: OperationMode, // operationMode
|
|
212
|
-
st: 'memory' | 'redis' | 'pluggable' | 'localstorage', // storage
|
|
213
|
-
aF: number, // activeFactories
|
|
214
|
-
rF: number, // redundantActiveFactories
|
|
215
|
-
t?: Array<string>, // tags
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// 'metrics/config' JSON request body
|
|
219
|
-
export type TelemetryConfigStatsPayload = TelemetryConfigStats & {
|
|
220
|
-
sE: boolean, // streamingEnabled
|
|
221
|
-
rR: RefreshRates, // refreshRates
|
|
222
|
-
uO: UrlOverrides, // urlOverrides
|
|
223
|
-
iQ: number, // impressionsQueueSize
|
|
224
|
-
eQ: number, // eventsQueueSize
|
|
225
|
-
iM: ImpressionsMode, // impressionsMode
|
|
226
|
-
iL: boolean, // impressionsListenerEnabled
|
|
227
|
-
hP: boolean, // httpProxyDetected
|
|
228
|
-
tR: number, // timeUntilSDKReady
|
|
229
|
-
tC?: number, // timeUntilSDKReadyFromCache
|
|
230
|
-
nR: number, // SDKNotReadyUsage
|
|
231
|
-
i?: Array<string>, // integrations
|
|
232
|
-
uC: number, // userConsent
|
|
233
|
-
fsT: number, // flagSetsTotal
|
|
234
|
-
fsI: number, // flagSetsInvalid
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
export interface ISubmitterManager extends ISyncTask {
|
|
238
|
-
start(onlyTelemetry?: boolean): void,
|
|
239
|
-
stop(allExceptTelemetry?: boolean): void,
|
|
240
|
-
execute(onlyTelemetry?: boolean): Promise<any>
|
|
241
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { SUBMITTERS_PUSH_FULL_QUEUE } from '../../logger/constants';
|
|
2
|
-
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
|
|
3
|
-
import { submitterFactory } from './submitter';
|
|
4
|
-
|
|
5
|
-
const DATA_NAME = 'unique keys';
|
|
6
|
-
const UNIQUE_KEYS_RATE = 900000; // 15 minutes
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Submitter that periodically posts impression counts
|
|
10
|
-
*/
|
|
11
|
-
export function uniqueKeysSubmitterFactory(params: ISdkFactoryContextSync) {
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
settings: { log, core: { key } },
|
|
15
|
-
splitApi: { postUniqueKeysBulkCs, postUniqueKeysBulkSs },
|
|
16
|
-
storage: { uniqueKeys }
|
|
17
|
-
} = params;
|
|
18
|
-
|
|
19
|
-
const isClientSide = key !== undefined;
|
|
20
|
-
const postUniqueKeysBulk = isClientSide ? postUniqueKeysBulkCs : postUniqueKeysBulkSs;
|
|
21
|
-
|
|
22
|
-
const syncTask = submitterFactory(log, postUniqueKeysBulk, uniqueKeys, UNIQUE_KEYS_RATE, DATA_NAME);
|
|
23
|
-
|
|
24
|
-
// register unique keys submitter to be executed when uniqueKeys cache is full
|
|
25
|
-
uniqueKeys.setOnFullQueueCb(() => {
|
|
26
|
-
if (syncTask.isRunning()) {
|
|
27
|
-
log.info(SUBMITTERS_PUSH_FULL_QUEUE, [DATA_NAME]);
|
|
28
|
-
syncTask.execute();
|
|
29
|
-
}
|
|
30
|
-
// If submitter is stopped (e.g., user consent declined or unknown, or app state offline), we don't send the data.
|
|
31
|
-
// Data will be sent when submitter is resumed.
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return syncTask;
|
|
35
|
-
}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { ISyncManagerCS } from './types';
|
|
2
|
-
import { submitterManagerFactory } from './submitters/submitterManager';
|
|
3
|
-
import { IReadinessManager } from '../readiness/types';
|
|
4
|
-
import { IStorageSync } from '../storages/types';
|
|
5
|
-
import { IPushManager } from './streaming/types';
|
|
6
|
-
import { IPollingManager, IPollingManagerCS } from './polling/types';
|
|
7
|
-
import { PUSH_SUBSYSTEM_UP, PUSH_SUBSYSTEM_DOWN } from './streaming/constants';
|
|
8
|
-
import { SYNC_START_POLLING, SYNC_CONTINUE_POLLING, SYNC_STOP_POLLING } from '../logger/constants';
|
|
9
|
-
import { isConsentGranted } from '../consent';
|
|
10
|
-
import { POLLING, STREAMING, SYNC_MODE_UPDATE } from '../utils/constants';
|
|
11
|
-
import { ISdkFactoryContextSync } from '../sdkFactory/types';
|
|
12
|
-
import { SDK_SPLITS_CACHE_LOADED } from '../readiness/constants';
|
|
13
|
-
import { usesSegmentsSync } from '../storages/AbstractSplitsCacheSync';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Online SyncManager factory.
|
|
17
|
-
* Can be used for server-side API, and client-side API with or without multiple clients.
|
|
18
|
-
*
|
|
19
|
-
* @param pollingManagerFactory - allows to specialize the SyncManager for server-side or client-side API by passing
|
|
20
|
-
* `pollingManagerSSFactory` or `pollingManagerCSFactory` respectively.
|
|
21
|
-
* @param pushManagerFactory - optional to build a SyncManager with or without streaming support
|
|
22
|
-
*/
|
|
23
|
-
export function syncManagerOnlineFactory(
|
|
24
|
-
pollingManagerFactory?: (params: ISdkFactoryContextSync) => IPollingManager,
|
|
25
|
-
pushManagerFactory?: (params: ISdkFactoryContextSync, pollingManager: IPollingManager) => IPushManager | undefined,
|
|
26
|
-
): (params: ISdkFactoryContextSync) => ISyncManagerCS {
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* SyncManager factory for modular SDK
|
|
30
|
-
*/
|
|
31
|
-
return function (params: ISdkFactoryContextSync): ISyncManagerCS {
|
|
32
|
-
|
|
33
|
-
const { settings, settings: { log, streamingEnabled, sync: { enabled: syncEnabled } }, telemetryTracker, storage, readiness } = params;
|
|
34
|
-
|
|
35
|
-
/** Polling Manager */
|
|
36
|
-
const pollingManager = pollingManagerFactory && pollingManagerFactory(params);
|
|
37
|
-
|
|
38
|
-
/** Push Manager */
|
|
39
|
-
const pushManager = syncEnabled && streamingEnabled && pollingManager && pushManagerFactory ?
|
|
40
|
-
pushManagerFactory(params, pollingManager) :
|
|
41
|
-
undefined;
|
|
42
|
-
|
|
43
|
-
/** Submitter Manager */
|
|
44
|
-
// It is not inyected as push and polling managers, because at the moment it is required
|
|
45
|
-
const submitterManager = submitterManagerFactory(params);
|
|
46
|
-
|
|
47
|
-
/** Sync Manager logic */
|
|
48
|
-
|
|
49
|
-
function startPolling() {
|
|
50
|
-
if (pollingManager!.isRunning()) {
|
|
51
|
-
log.info(SYNC_CONTINUE_POLLING);
|
|
52
|
-
} else {
|
|
53
|
-
log.info(SYNC_START_POLLING);
|
|
54
|
-
pollingManager!.start();
|
|
55
|
-
telemetryTracker.streamingEvent(SYNC_MODE_UPDATE, POLLING);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function stopPollingAndSyncAll() {
|
|
60
|
-
log.info(SYNC_STOP_POLLING);
|
|
61
|
-
// if polling, stop
|
|
62
|
-
if (pollingManager!.isRunning()) {
|
|
63
|
-
pollingManager!.stop();
|
|
64
|
-
telemetryTracker.streamingEvent(SYNC_MODE_UPDATE, STREAMING);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// fetch splits and segments. There is no need to catch this promise (it is always resolved)
|
|
68
|
-
pollingManager!.syncAll();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (pushManager) {
|
|
72
|
-
pushManager.on(PUSH_SUBSYSTEM_UP, stopPollingAndSyncAll);
|
|
73
|
-
pushManager.on(PUSH_SUBSYSTEM_DOWN, startPolling);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
let running = false; // flag that indicates whether the syncManager has been started (true) or stopped (false)
|
|
77
|
-
let startFirstTime = true; // flag to distinguish calling the `start` method for the first time, to support pausing and resuming the synchronization
|
|
78
|
-
|
|
79
|
-
return {
|
|
80
|
-
// Exposed for fine-grained control of synchronization.
|
|
81
|
-
// E.g.: user consent, app state changes (Page hide, Foreground/Background, Online/Offline).
|
|
82
|
-
pollingManager,
|
|
83
|
-
pushManager,
|
|
84
|
-
submitterManager,
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Method used to start the syncManager for the first time, or resume it after being stopped.
|
|
88
|
-
*/
|
|
89
|
-
start() {
|
|
90
|
-
running = true;
|
|
91
|
-
|
|
92
|
-
// @TODO once event, impression and telemetry storages support persistence, call when `validateCache` promise is resolved
|
|
93
|
-
submitterManager.start(!isConsentGranted(settings));
|
|
94
|
-
|
|
95
|
-
return Promise.resolve(storage.validateCache ? storage.validateCache() : false).then((isCacheLoaded) => {
|
|
96
|
-
if (!running) return;
|
|
97
|
-
|
|
98
|
-
if (startFirstTime) {
|
|
99
|
-
// Emits SDK_READY_FROM_CACHE
|
|
100
|
-
if (isCacheLoaded) readiness.splits.emit(SDK_SPLITS_CACHE_LOADED);
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// start syncing splits and segments
|
|
105
|
-
if (pollingManager) {
|
|
106
|
-
|
|
107
|
-
// If synchronization is disabled pushManager and pollingManager should not start
|
|
108
|
-
if (syncEnabled) {
|
|
109
|
-
if (pushManager) {
|
|
110
|
-
// Doesn't call `syncAll` when the syncManager is resuming
|
|
111
|
-
if (startFirstTime) {
|
|
112
|
-
pollingManager.syncAll();
|
|
113
|
-
}
|
|
114
|
-
pushManager.start();
|
|
115
|
-
} else {
|
|
116
|
-
pollingManager.start();
|
|
117
|
-
}
|
|
118
|
-
} else {
|
|
119
|
-
if (startFirstTime) {
|
|
120
|
-
pollingManager.syncAll();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
startFirstTime = false;
|
|
126
|
-
});
|
|
127
|
-
},
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Method used to stop/pause the syncManager.
|
|
131
|
-
*/
|
|
132
|
-
stop() {
|
|
133
|
-
running = false;
|
|
134
|
-
|
|
135
|
-
// stop syncing
|
|
136
|
-
if (pushManager) pushManager.stop();
|
|
137
|
-
if (pollingManager && pollingManager.isRunning()) pollingManager.stop();
|
|
138
|
-
|
|
139
|
-
// stop periodic data recording (events, impressions, telemetry).
|
|
140
|
-
submitterManager.stop();
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
isRunning() {
|
|
144
|
-
return running;
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
flush() {
|
|
148
|
-
return submitterManager.execute(!isConsentGranted(settings));
|
|
149
|
-
},
|
|
150
|
-
|
|
151
|
-
// [Only used for client-side]
|
|
152
|
-
// If polling and push managers are defined (standalone mode), they implement the interfaces for client-side
|
|
153
|
-
shared(matchingKey: string, readinessManager: IReadinessManager, storage: IStorageSync) {
|
|
154
|
-
if (!pollingManager) return;
|
|
155
|
-
|
|
156
|
-
const mySegmentsSyncTask = (pollingManager as IPollingManagerCS).add(matchingKey, readinessManager, storage);
|
|
157
|
-
if (syncEnabled && pushManager) pushManager.add(matchingKey, mySegmentsSyncTask);
|
|
158
|
-
|
|
159
|
-
if (running) {
|
|
160
|
-
if (syncEnabled) {
|
|
161
|
-
if (pushManager) {
|
|
162
|
-
if (pollingManager.isRunning()) {
|
|
163
|
-
// if doing polling, we must start the periodic fetch of data
|
|
164
|
-
if (usesSegmentsSync(storage)) mySegmentsSyncTask.start();
|
|
165
|
-
} else {
|
|
166
|
-
// if not polling, we must execute the sync task for the initial fetch
|
|
167
|
-
// of segments since `syncAll` was already executed when starting the main client
|
|
168
|
-
mySegmentsSyncTask.execute();
|
|
169
|
-
}
|
|
170
|
-
} else {
|
|
171
|
-
if (usesSegmentsSync(storage)) mySegmentsSyncTask.start();
|
|
172
|
-
}
|
|
173
|
-
} else {
|
|
174
|
-
if (!readinessManager.isReady()) mySegmentsSyncTask.execute();
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
return {
|
|
179
|
-
stop() {
|
|
180
|
-
// check in case `client.destroy()` has been invoked more than once for the same client
|
|
181
|
-
const mySegmentsSyncTask = (pollingManager as IPollingManagerCS).get(matchingKey);
|
|
182
|
-
if (mySegmentsSyncTask) {
|
|
183
|
-
// stop syncing
|
|
184
|
-
if (pushManager) pushManager.remove(matchingKey);
|
|
185
|
-
if (mySegmentsSyncTask.isRunning()) mySegmentsSyncTask.stop();
|
|
186
|
-
|
|
187
|
-
(pollingManager as IPollingManagerCS).remove(matchingKey);
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
flush() { return Promise.resolve(); }
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
};
|
|
195
|
-
}
|
package/src/sync/syncTask.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { SYNC_TASK_EXECUTE, SYNC_TASK_START, SYNC_TASK_STOP } from '../logger/constants';
|
|
2
|
-
import { ILogger } from '../logger/types';
|
|
3
|
-
import { ISyncTask } from './types';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Creates an object that handles the periodic execution of a given task via "start" and "stop" methods.
|
|
7
|
-
* 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).
|
|
8
|
-
*
|
|
9
|
-
* @param log - Logger instance.
|
|
10
|
-
* @param task - Task to execute that returns a promise that NEVER REJECTS. Otherwise, periodic execution can result in Unhandled Promise Rejections.
|
|
11
|
-
* @param period - Period in milliseconds to execute the task.
|
|
12
|
-
* @param taskName - Optional task name for logging.
|
|
13
|
-
* @returns A sync task that wraps the given task.
|
|
14
|
-
*/
|
|
15
|
-
export function syncTaskFactory<Input extends any[], Output = any>(log: ILogger, task: (...args: Input) => Promise<Output>, period: number, taskName = 'task'): ISyncTask<Input, Output> {
|
|
16
|
-
|
|
17
|
-
// Flag that indicates if the task is executing
|
|
18
|
-
let executing = 0;
|
|
19
|
-
// Promise chain to resolve tasks sequentially
|
|
20
|
-
let promiseChain: Promise<Output> | undefined;
|
|
21
|
-
// flag that indicates if the task periodic execution has been started/stopped.
|
|
22
|
-
let running = false;
|
|
23
|
-
// Auxiliar counter used to avoid race condition when calling `start` & `stop` intermittently
|
|
24
|
-
let runningId = 0;
|
|
25
|
-
// Params passed to `task` when called periodically
|
|
26
|
-
let runningArgs: Input;
|
|
27
|
-
// Id of the periodic call timeout
|
|
28
|
-
let timeoutID: any;
|
|
29
|
-
|
|
30
|
-
function execute(...args: Input): Promise<Output> {
|
|
31
|
-
executing++;
|
|
32
|
-
log.debug(SYNC_TASK_EXECUTE, [taskName]);
|
|
33
|
-
|
|
34
|
-
// Update `promiseChain` with last promise, to run tasks serially
|
|
35
|
-
promiseChain = (promiseChain ? promiseChain.then(() => task(...args)) : task(...args))
|
|
36
|
-
.then(result => {
|
|
37
|
-
executing--;
|
|
38
|
-
return result;
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
return promiseChain;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function periodicExecute(currentRunningId: number) {
|
|
45
|
-
return execute(...runningArgs).then((result) => {
|
|
46
|
-
// Call `setTimeout` if periodic execution was started and `currentRunningId === runningId`
|
|
47
|
-
// to avoid a race condition when calling `start`, `stop` and `start` again
|
|
48
|
-
if (running && currentRunningId === runningId) timeoutID = setTimeout(periodicExecute, period, currentRunningId);
|
|
49
|
-
return result;
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
execute,
|
|
55
|
-
|
|
56
|
-
isExecuting() {
|
|
57
|
-
return executing > 0;
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
start(...args: Input) {
|
|
61
|
-
if (!running) {
|
|
62
|
-
running = true;
|
|
63
|
-
runningId++;
|
|
64
|
-
runningArgs = args;
|
|
65
|
-
log.debug(SYNC_TASK_START, [taskName, period]);
|
|
66
|
-
return periodicExecute(runningId);
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
stop() {
|
|
71
|
-
if (running) {
|
|
72
|
-
running = false;
|
|
73
|
-
log.debug(SYNC_TASK_STOP, [taskName]);
|
|
74
|
-
clearTimeout(timeoutID);
|
|
75
|
-
timeoutID = undefined;
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
isRunning() {
|
|
80
|
-
return running;
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
package/src/sync/types.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { IReadinessManager } from '../readiness/types';
|
|
2
|
-
import { IStorageSync } from '../storages/types';
|
|
3
|
-
import { IPollingManager } from './polling/types';
|
|
4
|
-
import { IPushManager } from './streaming/types';
|
|
5
|
-
import { ISubmitterManager } from './submitters/types';
|
|
6
|
-
|
|
7
|
-
export interface ITask<Input extends any[] = []> {
|
|
8
|
-
/**
|
|
9
|
-
* Start periodic execution of the task
|
|
10
|
-
*/
|
|
11
|
-
start(...args: Input): any,
|
|
12
|
-
/**
|
|
13
|
-
* Stop periodic execution of the task
|
|
14
|
-
*/
|
|
15
|
-
stop(): any,
|
|
16
|
-
/**
|
|
17
|
-
* Returns true if the task periodic execution is running
|
|
18
|
-
*/
|
|
19
|
-
isRunning(): boolean
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface ISyncTask<Input extends any[] = [], Output = any> extends ITask<Input> {
|
|
23
|
-
/**
|
|
24
|
-
* Start periodic execution of the task, and returns the promise of the first execution
|
|
25
|
-
*/
|
|
26
|
-
start(...args: Input): Promise<Output> | void
|
|
27
|
-
/**
|
|
28
|
-
* Explicitly executes the task. It can be invoked multiple times. Returns a promise when the task is resolved
|
|
29
|
-
*/
|
|
30
|
-
execute(...args: Input): Promise<Output>
|
|
31
|
-
/**
|
|
32
|
-
* Returns true if the task is being executed
|
|
33
|
-
*/
|
|
34
|
-
isExecuting(): boolean
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** SyncManager */
|
|
38
|
-
|
|
39
|
-
export interface ISyncManager extends ITask {
|
|
40
|
-
flush(): Promise<any>,
|
|
41
|
-
pushManager?: IPushManager,
|
|
42
|
-
pollingManager?: IPollingManager,
|
|
43
|
-
submitterManager?: ISubmitterManager
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export interface ISyncManagerCS extends ISyncManager {
|
|
47
|
-
shared(matchingKey: string, readinessManager: IReadinessManager, storage: IStorageSync): Pick<ISyncManager, 'stop' | 'flush'> | undefined
|
|
48
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
import { thenable } from '../utils/promise/thenable';
|
|
3
|
-
import { IEventsCacheBase, ITelemetryCacheAsync, ITelemetryCacheSync } from '../storages/types';
|
|
4
|
-
import { IEventsHandler, IEventTracker } from './types';
|
|
5
|
-
import { ISettings } from '../types';
|
|
6
|
-
import SplitIO from '../../types/splitio';
|
|
7
|
-
import { EVENTS_TRACKER_SUCCESS, ERROR_EVENTS_TRACKER } from '../logger/constants';
|
|
8
|
-
import { CONSENT_DECLINED, DROPPED, QUEUED } from '../utils/constants';
|
|
9
|
-
import { isConsumerMode } from '../utils/settingsValidation/mode';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Event tracker stores events in cache and pass them to the integrations manager if provided.
|
|
13
|
-
*
|
|
14
|
-
* @param eventsCache - cache to save events
|
|
15
|
-
* @param integrationsManager - optional event handler used for integrations
|
|
16
|
-
*/
|
|
17
|
-
export function eventTrackerFactory(
|
|
18
|
-
settings: ISettings,
|
|
19
|
-
eventsCache: IEventsCacheBase,
|
|
20
|
-
whenInit: (cb: () => void) => void,
|
|
21
|
-
integrationsManager?: IEventsHandler,
|
|
22
|
-
telemetryCache?: ITelemetryCacheSync | ITelemetryCacheAsync
|
|
23
|
-
): IEventTracker {
|
|
24
|
-
|
|
25
|
-
const { log, mode } = settings;
|
|
26
|
-
const isAsync = isConsumerMode(mode);
|
|
27
|
-
|
|
28
|
-
function queueEventsCallback(eventData: SplitIO.EventData, tracked: boolean) {
|
|
29
|
-
const { eventTypeId, trafficTypeName, key, value, timestamp, properties } = eventData;
|
|
30
|
-
// Logging every prop would be too much.
|
|
31
|
-
const msg = `event of type "${eventTypeId}" for traffic type "${trafficTypeName}". Key: ${key}. Value: ${value}. Timestamp: ${timestamp}. ${properties ? 'With properties.' : 'With no properties.'}`;
|
|
32
|
-
|
|
33
|
-
if (tracked) {
|
|
34
|
-
log.info(EVENTS_TRACKER_SUCCESS, [msg]);
|
|
35
|
-
if (integrationsManager) {
|
|
36
|
-
whenInit(() => {
|
|
37
|
-
// Wrap in a timeout because we don't want it to be blocking.
|
|
38
|
-
setTimeout(() => {
|
|
39
|
-
// copy of event, to avoid unexpected behavior if modified by integrations
|
|
40
|
-
const eventDataCopy = objectAssign({}, eventData);
|
|
41
|
-
if (properties) eventDataCopy.properties = objectAssign({}, properties);
|
|
42
|
-
// integrationsManager does not throw errors (they are internally handled by each integration module)
|
|
43
|
-
integrationsManager.handleEvent(eventDataCopy);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
log.error(ERROR_EVENTS_TRACKER, [msg]);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return tracked;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
track(eventData: SplitIO.EventData, size?: number) {
|
|
56
|
-
if (settings.userConsent === CONSENT_DECLINED) {
|
|
57
|
-
return isAsync ? Promise.resolve(false) : false;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const tracked = eventsCache.track(eventData, size);
|
|
61
|
-
|
|
62
|
-
if (thenable(tracked)) {
|
|
63
|
-
return tracked.then(queueEventsCallback.bind(null, eventData));
|
|
64
|
-
} else {
|
|
65
|
-
// Record when eventsCache is sync only (standalone mode)
|
|
66
|
-
// @TODO we are not dropping events on full queue yet, so `tracked` is always true ATM
|
|
67
|
-
if (telemetryCache) (telemetryCache as ITelemetryCacheSync).recordEventStats(tracked ? QUEUED : DROPPED, 1);
|
|
68
|
-
return queueEventsCallback(eventData, tracked);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import SplitIO from '../../../types/splitio';
|
|
2
|
-
import { LRUCache } from '../../utils/LRUCache';
|
|
3
|
-
import { IImpressionObserver } from './types';
|
|
4
|
-
|
|
5
|
-
export class ImpressionObserver<K extends string | number = string> implements IImpressionObserver {
|
|
6
|
-
private cache: LRUCache<K, number>;
|
|
7
|
-
private hasher: (impression: SplitIO.ImpressionDTO) => K;
|
|
8
|
-
|
|
9
|
-
constructor(size: number, hasher: (impression: SplitIO.ImpressionDTO) => K) {
|
|
10
|
-
this.cache = new LRUCache(size);
|
|
11
|
-
this.hasher = hasher;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
testAndSet(impression: SplitIO.ImpressionDTO) {
|
|
15
|
-
const hash = this.hasher(impression);
|
|
16
|
-
const previous = this.cache.get(hash);
|
|
17
|
-
this.cache.set(hash, impression.time);
|
|
18
|
-
return previous;
|
|
19
|
-
}
|
|
20
|
-
}
|