@splitsoftware/splitio-commons 2.5.0-rc.0 → 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 +893 -142
- 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 -2087
- 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 -109
- package/cjs/storages/findLatencyIndex.js +0 -18
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -81
- package/cjs/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -121
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +0 -208
- package/cjs/storages/inLocalStorage/constants.js +0 -5
- package/cjs/storages/inLocalStorage/index.js +0 -73
- package/cjs/storages/inLocalStorage/validateCache.js +0 -80
- 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 -81
- package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +0 -46
- package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -65
- 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 -72
- 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 -81
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +0 -80
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +0 -188
- 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 -172
- 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 -16
- 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 -104
- package/esm/storages/findLatencyIndex.js +0 -14
- package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -78
- package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -118
- package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +0 -205
- package/esm/storages/inLocalStorage/constants.js +0 -2
- package/esm/storages/inLocalStorage/index.js +0 -69
- package/esm/storages/inLocalStorage/validateCache.js +0 -76
- 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 -77
- package/esm/storages/inMemory/MySegmentsCacheInMemory.js +0 -43
- package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -62
- 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 -67
- 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 -77
- package/esm/sync/polling/updaters/segmentChangesUpdater.js +0 -76
- package/esm/sync/polling/updaters/splitChangesUpdater.js +0 -182
- 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 -168
- 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 -12
- 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 -132
- 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 -113
- package/src/storages/findLatencyIndex.ts +0 -16
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +0 -86
- package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -140
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +0 -244
- package/src/storages/inLocalStorage/constants.ts +0 -2
- package/src/storages/inLocalStorage/index.ts +0 -83
- package/src/storages/inLocalStorage/validateCache.ts +0 -93
- 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 -92
- package/src/storages/inMemory/MySegmentsCacheInMemory.ts +0 -49
- package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -72
- 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 -522
- 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 -98
- 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 -102
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +0 -92
- package/src/sync/polling/updaters/splitChangesUpdater.ts +0 -218
- 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 -190
- 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 -44
- 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 -11
- 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,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ImpressionsCacheInRedis = void 0;
|
|
4
|
-
var utils_1 = require("../utils");
|
|
5
|
-
var IMPRESSIONS_TTL_REFRESH = 3600; // 1 hr
|
|
6
|
-
var ImpressionsCacheInRedis = /** @class */ (function () {
|
|
7
|
-
function ImpressionsCacheInRedis(log, key, redis, metadata) {
|
|
8
|
-
this.log = log;
|
|
9
|
-
this.key = key;
|
|
10
|
-
this.redis = redis;
|
|
11
|
-
this.metadata = metadata;
|
|
12
|
-
}
|
|
13
|
-
ImpressionsCacheInRedis.prototype.track = function (impressions) {
|
|
14
|
-
var _this = this;
|
|
15
|
-
return this.redis.rpush(this.key, (0, utils_1.impressionsToJSON)(impressions, this.metadata)).then(function (queuedCount) {
|
|
16
|
-
// If this is the creation of the key on Redis, set the expiration for it in 1hr.
|
|
17
|
-
if (queuedCount === impressions.length) {
|
|
18
|
-
return _this.redis.expire(_this.key, IMPRESSIONS_TTL_REFRESH);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
ImpressionsCacheInRedis.prototype.count = function () {
|
|
23
|
-
return this.redis.llen(this.key).catch(function () { return 0; });
|
|
24
|
-
};
|
|
25
|
-
ImpressionsCacheInRedis.prototype.drop = function (count) {
|
|
26
|
-
if (!count)
|
|
27
|
-
return this.redis.del(this.key);
|
|
28
|
-
return this.redis.ltrim(this.key, count, -1);
|
|
29
|
-
};
|
|
30
|
-
ImpressionsCacheInRedis.prototype.popNWithMetadata = function (count) {
|
|
31
|
-
var _this = this;
|
|
32
|
-
return this.redis.lrange(this.key, 0, count - 1).then(function (items) {
|
|
33
|
-
return _this.redis.ltrim(_this.key, items.length, -1).then(function () {
|
|
34
|
-
// This operation will simply do nothing if the key no longer exists (queue is empty)
|
|
35
|
-
// It's only done in the "successful" exit path so that the TTL is not overriden if impressons weren't
|
|
36
|
-
// popped correctly. This will result in impressions getting lost but will prevent the queue from taking
|
|
37
|
-
// a huge amount of memory.
|
|
38
|
-
_this.redis.expire(_this.key, IMPRESSIONS_TTL_REFRESH).catch(function () { }); // noop catch handler
|
|
39
|
-
return items.map(function (item) { return JSON.parse(item); });
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
return ImpressionsCacheInRedis;
|
|
44
|
-
}());
|
|
45
|
-
exports.ImpressionsCacheInRedis = ImpressionsCacheInRedis;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RBSegmentsCacheInRedis = void 0;
|
|
4
|
-
var lang_1 = require("../../utils/lang");
|
|
5
|
-
var constants_1 = require("./constants");
|
|
6
|
-
var sets_1 = require("../../utils/lang/sets");
|
|
7
|
-
var RBSegmentsCacheInRedis = /** @class */ (function () {
|
|
8
|
-
function RBSegmentsCacheInRedis(log, keys, redis) {
|
|
9
|
-
this.log = log;
|
|
10
|
-
this.keys = keys;
|
|
11
|
-
this.redis = redis;
|
|
12
|
-
}
|
|
13
|
-
RBSegmentsCacheInRedis.prototype.get = function (name) {
|
|
14
|
-
return this.redis.get(this.keys.buildRBSegmentKey(name))
|
|
15
|
-
.then(function (maybeRBSegment) { return maybeRBSegment && JSON.parse(maybeRBSegment); });
|
|
16
|
-
};
|
|
17
|
-
RBSegmentsCacheInRedis.prototype.getNames = function () {
|
|
18
|
-
var _this = this;
|
|
19
|
-
return this.redis.keys(this.keys.searchPatternForRBSegmentKeys()).then(function (listOfKeys) { return listOfKeys.map(_this.keys.extractKey); });
|
|
20
|
-
};
|
|
21
|
-
RBSegmentsCacheInRedis.prototype.contains = function (names) {
|
|
22
|
-
var namesArray = (0, sets_1.setToArray)(names);
|
|
23
|
-
return this.getNames().then(function (namesInStorage) {
|
|
24
|
-
return namesArray.every(function (name) { return namesInStorage.includes(name); });
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
RBSegmentsCacheInRedis.prototype.update = function (toAdd, toRemove, changeNumber) {
|
|
28
|
-
var _this = this;
|
|
29
|
-
return Promise.all([
|
|
30
|
-
this.setChangeNumber(changeNumber),
|
|
31
|
-
Promise.all(toAdd.map(function (toAdd) {
|
|
32
|
-
var key = _this.keys.buildRBSegmentKey(toAdd.name);
|
|
33
|
-
var stringifiedNewRBSegment = JSON.stringify(toAdd);
|
|
34
|
-
return _this.redis.set(key, stringifiedNewRBSegment).then(function () { return true; });
|
|
35
|
-
})),
|
|
36
|
-
Promise.all(toRemove.map(function (toRemove) {
|
|
37
|
-
var key = _this.keys.buildRBSegmentKey(toRemove.name);
|
|
38
|
-
return _this.redis.del(key).then(function (status) { return status === 1; });
|
|
39
|
-
}))
|
|
40
|
-
]).then(function (_a) {
|
|
41
|
-
var added = _a[1], removed = _a[2];
|
|
42
|
-
return added.some(function (result) { return result; }) || removed.some(function (result) { return result; });
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
RBSegmentsCacheInRedis.prototype.setChangeNumber = function (changeNumber) {
|
|
46
|
-
return this.redis.set(this.keys.buildRBSegmentsTillKey(), changeNumber + '').then(function (status) { return status === 'OK'; });
|
|
47
|
-
};
|
|
48
|
-
RBSegmentsCacheInRedis.prototype.getChangeNumber = function () {
|
|
49
|
-
var _this = this;
|
|
50
|
-
return this.redis.get(this.keys.buildRBSegmentsTillKey()).then(function (value) {
|
|
51
|
-
var i = parseInt(value, 10);
|
|
52
|
-
return (0, lang_1.isNaNNumber)(i) ? -1 : i;
|
|
53
|
-
}).catch(function (e) {
|
|
54
|
-
_this.log.error(constants_1.LOG_PREFIX + 'Could not retrieve changeNumber from storage. Error: ' + e);
|
|
55
|
-
return -1;
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
// @TODO implement if required by DataLoader or producer mode
|
|
59
|
-
RBSegmentsCacheInRedis.prototype.clear = function () {
|
|
60
|
-
return Promise.resolve();
|
|
61
|
-
};
|
|
62
|
-
return RBSegmentsCacheInRedis;
|
|
63
|
-
}());
|
|
64
|
-
exports.RBSegmentsCacheInRedis = RBSegmentsCacheInRedis;
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RedisAdapter = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var ioredis_1 = (0, tslib_1.__importDefault)(require("ioredis"));
|
|
6
|
-
var lang_1 = require("../../utils/lang");
|
|
7
|
-
var thenable_1 = require("../../utils/promise/thenable");
|
|
8
|
-
var timeout_1 = require("../../utils/promise/timeout");
|
|
9
|
-
var sets_1 = require("../../utils/lang/sets");
|
|
10
|
-
var LOG_PREFIX = 'storage:redis-adapter: ';
|
|
11
|
-
// If we ever decide to fully wrap every method, there's a Commander.getBuiltinCommands from ioredis.
|
|
12
|
-
var METHODS_TO_PROMISE_WRAP = ['set', 'exec', 'del', 'get', 'keys', 'sadd', 'srem', 'sismember', 'smembers', 'incr', 'rpush', 'expire', 'mget', 'lrange', 'ltrim', 'hset', 'hincrby', 'popNRaw'];
|
|
13
|
-
var METHODS_TO_PROMISE_WRAP_EXEC = ['pipeline'];
|
|
14
|
-
// Not part of the settings since it'll vary on each storage. We should be removing storage specific logic from elsewhere.
|
|
15
|
-
var DEFAULT_OPTIONS = {
|
|
16
|
-
connectionTimeout: 10000,
|
|
17
|
-
operationTimeout: 5000
|
|
18
|
-
};
|
|
19
|
-
// Library specifics.
|
|
20
|
-
var DEFAULT_LIBRARY_OPTIONS = {
|
|
21
|
-
enableOfflineQueue: false,
|
|
22
|
-
connectTimeout: DEFAULT_OPTIONS.connectionTimeout,
|
|
23
|
-
lazyConnect: false
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Redis adapter on top of the library of choice (written with ioredis) for some extra control.
|
|
27
|
-
*/
|
|
28
|
-
var RedisAdapter = /** @class */ (function (_super) {
|
|
29
|
-
(0, tslib_1.__extends)(RedisAdapter, _super);
|
|
30
|
-
function RedisAdapter(log, storageSettings) {
|
|
31
|
-
if (storageSettings === void 0) { storageSettings = {}; }
|
|
32
|
-
var _this = this;
|
|
33
|
-
var options = RedisAdapter._defineOptions(storageSettings);
|
|
34
|
-
// Call the ioredis constructor
|
|
35
|
-
_this = _super.apply(this, RedisAdapter._defineLibrarySettings(options)) || this;
|
|
36
|
-
_this.log = log;
|
|
37
|
-
_this._options = options;
|
|
38
|
-
_this._notReadyCommandsQueue = [];
|
|
39
|
-
_this._runningCommands = new Set();
|
|
40
|
-
_this._listenToEvents();
|
|
41
|
-
_this._setTimeoutWrappers();
|
|
42
|
-
_this._setDisconnectWrapper();
|
|
43
|
-
return _this;
|
|
44
|
-
}
|
|
45
|
-
RedisAdapter.prototype._listenToEvents = function () {
|
|
46
|
-
var _this = this;
|
|
47
|
-
this.once('ready', function () {
|
|
48
|
-
var commandsCount = _this._notReadyCommandsQueue ? _this._notReadyCommandsQueue.length : 0;
|
|
49
|
-
_this.log.info(LOG_PREFIX + ("Redis connection established. Queued commands: " + commandsCount + "."));
|
|
50
|
-
_this._notReadyCommandsQueue && _this._notReadyCommandsQueue.forEach(function (queued) {
|
|
51
|
-
_this.log.info(LOG_PREFIX + ("Executing queued " + queued.name + " command."));
|
|
52
|
-
queued.command().then(queued.resolve).catch(queued.reject);
|
|
53
|
-
});
|
|
54
|
-
// After the SDK is ready for the first time we'll stop queueing commands. This is just so we can keep handling BUR for them.
|
|
55
|
-
_this._notReadyCommandsQueue = undefined;
|
|
56
|
-
});
|
|
57
|
-
this.once('close', function () {
|
|
58
|
-
_this.log.info(LOG_PREFIX + 'Redis connection closed.');
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
RedisAdapter.prototype._setTimeoutWrappers = function () {
|
|
62
|
-
var instance = this;
|
|
63
|
-
var wrapCommand = function (originalMethod, methodName) {
|
|
64
|
-
// The value of "this" in this function should be the instance actually executing the method. It might be the instance referred (the base one)
|
|
65
|
-
// or it can be the instance of a Pipeline object.
|
|
66
|
-
return function () {
|
|
67
|
-
var params = arguments;
|
|
68
|
-
var caller = this;
|
|
69
|
-
function commandWrapper() {
|
|
70
|
-
instance.log.debug(LOG_PREFIX + "Executing " + methodName + ".");
|
|
71
|
-
var result = originalMethod.apply(caller, params);
|
|
72
|
-
if ((0, thenable_1.thenable)(result)) {
|
|
73
|
-
// For handling pending commands on disconnect, add to the set and remove once finished.
|
|
74
|
-
// On sync commands there's no need, only thenables.
|
|
75
|
-
instance._runningCommands.add(result);
|
|
76
|
-
var cleanUpRunningCommandsCb = function () {
|
|
77
|
-
instance._runningCommands.delete(result);
|
|
78
|
-
};
|
|
79
|
-
// Both success and error remove from queue.
|
|
80
|
-
result.then(cleanUpRunningCommandsCb, cleanUpRunningCommandsCb);
|
|
81
|
-
return (0, timeout_1.timeout)(instance._options.operationTimeout, result).catch(function (err) {
|
|
82
|
-
instance.log.error("" + LOG_PREFIX + methodName + " operation threw an error or exceeded configured timeout of " + instance._options.operationTimeout + "ms. Message: " + err);
|
|
83
|
-
// Handling is not the adapter responsibility.
|
|
84
|
-
throw err;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
if (instance._notReadyCommandsQueue) {
|
|
90
|
-
return new Promise(function (resolve, reject) {
|
|
91
|
-
instance._notReadyCommandsQueue.unshift({
|
|
92
|
-
resolve: resolve,
|
|
93
|
-
reject: reject,
|
|
94
|
-
command: commandWrapper,
|
|
95
|
-
name: methodName.toUpperCase()
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return commandWrapper();
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
// Wrap regular async methods to track timeouts and queue when Redis is not yet executing commands.
|
|
105
|
-
METHODS_TO_PROMISE_WRAP.forEach(function (methodName) {
|
|
106
|
-
var originalFn = instance[methodName];
|
|
107
|
-
instance[methodName] = wrapCommand(originalFn, methodName);
|
|
108
|
-
});
|
|
109
|
-
// Special handling for pipeline~like methods. We need to wrap the async trigger, which is exec, but return the Pipeline right away.
|
|
110
|
-
METHODS_TO_PROMISE_WRAP_EXEC.forEach(function (methodName) {
|
|
111
|
-
var originalFn = instance[methodName];
|
|
112
|
-
// "First level wrapper" to handle the sync execution and wrap async, queueing later if applicable.
|
|
113
|
-
instance[methodName] = function () {
|
|
114
|
-
var res = originalFn.apply(instance, arguments);
|
|
115
|
-
var originalExec = res.exec;
|
|
116
|
-
res.exec = wrapCommand(originalExec, methodName + '.exec').bind(res);
|
|
117
|
-
return res;
|
|
118
|
-
};
|
|
119
|
-
});
|
|
120
|
-
};
|
|
121
|
-
RedisAdapter.prototype._setDisconnectWrapper = function () {
|
|
122
|
-
var instance = this;
|
|
123
|
-
var originalMethod = instance.disconnect;
|
|
124
|
-
instance.disconnect = function disconnect() {
|
|
125
|
-
var params = [];
|
|
126
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
127
|
-
params[_i] = arguments[_i];
|
|
128
|
-
}
|
|
129
|
-
setTimeout(function deferredDisconnect() {
|
|
130
|
-
if (instance._runningCommands.size > 0) {
|
|
131
|
-
instance.log.info(LOG_PREFIX + ("Attempting to disconnect but there are " + instance._runningCommands.size + " commands still waiting for resolution. Defering disconnection until those finish."));
|
|
132
|
-
Promise.all((0, sets_1.setToArray)(instance._runningCommands))
|
|
133
|
-
.then(function () {
|
|
134
|
-
instance.log.debug(LOG_PREFIX + 'Pending commands finished successfully, disconnecting.');
|
|
135
|
-
originalMethod.apply(instance, params);
|
|
136
|
-
})
|
|
137
|
-
.catch(function (e) {
|
|
138
|
-
instance.log.warn(LOG_PREFIX + ("Pending commands finished with error: " + e + ". Proceeding with disconnection."));
|
|
139
|
-
originalMethod.apply(instance, params);
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
instance.log.debug(LOG_PREFIX + 'No commands pending execution, disconnect.');
|
|
144
|
-
// Nothing pending, just proceed.
|
|
145
|
-
originalMethod.apply(instance, params);
|
|
146
|
-
}
|
|
147
|
-
}, 10);
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* Receives the options and returns an array of parameters for the ioredis constructor.
|
|
152
|
-
* Keeping both redis setup options for backwards compatibility.
|
|
153
|
-
*/
|
|
154
|
-
RedisAdapter._defineLibrarySettings = function (options) {
|
|
155
|
-
var opts = (0, lang_1.merge)({}, DEFAULT_LIBRARY_OPTIONS);
|
|
156
|
-
var result = [opts];
|
|
157
|
-
if (!(0, lang_1.isString)(options.url)) {
|
|
158
|
-
(0, lang_1.merge)(opts, {
|
|
159
|
-
host: options.host,
|
|
160
|
-
port: options.port,
|
|
161
|
-
db: options.db,
|
|
162
|
-
password: options.pass
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
else { // If it IS the string URL, that'll be the first param for ioredis.
|
|
166
|
-
result.unshift(options.url);
|
|
167
|
-
}
|
|
168
|
-
if (options.connectionTimeout) {
|
|
169
|
-
(0, lang_1.merge)(opts, { connectTimeout: options.connectionTimeout });
|
|
170
|
-
}
|
|
171
|
-
if (options.tls) {
|
|
172
|
-
(0, lang_1.merge)(opts, { tls: options.tls });
|
|
173
|
-
}
|
|
174
|
-
return result;
|
|
175
|
-
};
|
|
176
|
-
/**
|
|
177
|
-
* Parses the options into what we care about.
|
|
178
|
-
*/
|
|
179
|
-
RedisAdapter._defineOptions = function (_a) {
|
|
180
|
-
var connectionTimeout = _a.connectionTimeout, operationTimeout = _a.operationTimeout, url = _a.url, host = _a.host, port = _a.port, db = _a.db, pass = _a.pass, tls = _a.tls;
|
|
181
|
-
var parsedOptions = {
|
|
182
|
-
connectionTimeout: connectionTimeout,
|
|
183
|
-
operationTimeout: operationTimeout,
|
|
184
|
-
url: url,
|
|
185
|
-
host: host,
|
|
186
|
-
port: port,
|
|
187
|
-
db: db,
|
|
188
|
-
pass: pass,
|
|
189
|
-
tls: tls
|
|
190
|
-
};
|
|
191
|
-
return (0, lang_1.merge)({}, DEFAULT_OPTIONS, parsedOptions);
|
|
192
|
-
};
|
|
193
|
-
return RedisAdapter;
|
|
194
|
-
}(ioredis_1.default));
|
|
195
|
-
exports.RedisAdapter = RedisAdapter;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SegmentsCacheInRedis = void 0;
|
|
4
|
-
var lang_1 = require("../../utils/lang");
|
|
5
|
-
var constants_1 = require("../inLocalStorage/constants");
|
|
6
|
-
var SegmentsCacheInRedis = /** @class */ (function () {
|
|
7
|
-
function SegmentsCacheInRedis(log, keys, redis) {
|
|
8
|
-
this.log = log;
|
|
9
|
-
this.redis = redis;
|
|
10
|
-
this.keys = keys;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Update the given segment `name` with the lists of `addedKeys`, `removedKeys` and `changeNumber`.
|
|
14
|
-
* The returned promise is resolved if the operation success, with `true` if the segment was updated (i.e., some key was added or removed),
|
|
15
|
-
* or rejected if it fails (e.g., Redis operation fails).
|
|
16
|
-
*/
|
|
17
|
-
SegmentsCacheInRedis.prototype.update = function (name, addedKeys, removedKeys, changeNumber) {
|
|
18
|
-
var segmentKey = this.keys.buildSegmentNameKey(name);
|
|
19
|
-
return Promise.all([
|
|
20
|
-
addedKeys.length && this.redis.sadd(segmentKey, addedKeys),
|
|
21
|
-
removedKeys.length && this.redis.srem(segmentKey, removedKeys),
|
|
22
|
-
this.redis.set(this.keys.buildSegmentTillKey(name), changeNumber + '')
|
|
23
|
-
]).then(function () {
|
|
24
|
-
return addedKeys.length > 0 || removedKeys.length > 0;
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
SegmentsCacheInRedis.prototype.isInSegment = function (name, key) {
|
|
28
|
-
return this.redis.sismember(this.keys.buildSegmentNameKey(name), key).then(function (matches) { return matches !== 0; });
|
|
29
|
-
};
|
|
30
|
-
SegmentsCacheInRedis.prototype.getChangeNumber = function (name) {
|
|
31
|
-
var _this = this;
|
|
32
|
-
return this.redis.get(this.keys.buildSegmentTillKey(name)).then(function (value) {
|
|
33
|
-
var i = parseInt(value, 10);
|
|
34
|
-
return (0, lang_1.isNaNNumber)(i) ? undefined : i;
|
|
35
|
-
}).catch(function (e) {
|
|
36
|
-
_this.log.error(constants_1.LOG_PREFIX + 'Could not retrieve changeNumber from segments storage. Error: ' + e);
|
|
37
|
-
return undefined;
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
SegmentsCacheInRedis.prototype.registerSegments = function (segments) {
|
|
41
|
-
if (segments.length) {
|
|
42
|
-
return this.redis.sadd(this.keys.buildRegisteredSegmentsKey(), segments).then(function () { return true; });
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return Promise.resolve(true);
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
SegmentsCacheInRedis.prototype.getRegisteredSegments = function () {
|
|
49
|
-
return this.redis.smembers(this.keys.buildRegisteredSegmentsKey());
|
|
50
|
-
};
|
|
51
|
-
// @TODO remove or implement. It is not being used.
|
|
52
|
-
SegmentsCacheInRedis.prototype.clear = function () {
|
|
53
|
-
return Promise.resolve();
|
|
54
|
-
};
|
|
55
|
-
return SegmentsCacheInRedis;
|
|
56
|
-
}());
|
|
57
|
-
exports.SegmentsCacheInRedis = SegmentsCacheInRedis;
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SplitsCacheInRedis = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var lang_1 = require("../../utils/lang");
|
|
6
|
-
var constants_1 = require("./constants");
|
|
7
|
-
var AbstractSplitsCacheAsync_1 = require("../AbstractSplitsCacheAsync");
|
|
8
|
-
var sets_1 = require("../../utils/lang/sets");
|
|
9
|
-
/**
|
|
10
|
-
* Discard errors for an answer of multiple operations.
|
|
11
|
-
*/
|
|
12
|
-
function processPipelineAnswer(results) {
|
|
13
|
-
return results.reduce(function (accum, errValuePair) {
|
|
14
|
-
if (errValuePair[0] === null)
|
|
15
|
-
accum.push(errValuePair[1]);
|
|
16
|
-
return accum;
|
|
17
|
-
}, []);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* ISplitsCacheAsync implementation that stores split definitions in Redis.
|
|
21
|
-
* Supported by Node.js
|
|
22
|
-
*/
|
|
23
|
-
var SplitsCacheInRedis = /** @class */ (function (_super) {
|
|
24
|
-
(0, tslib_1.__extends)(SplitsCacheInRedis, _super);
|
|
25
|
-
function SplitsCacheInRedis(log, keys, redis, splitFiltersValidation) {
|
|
26
|
-
var _this = _super.call(this) || this;
|
|
27
|
-
_this.log = log;
|
|
28
|
-
_this.redis = redis;
|
|
29
|
-
_this.keys = keys;
|
|
30
|
-
_this.flagSetsFilter = splitFiltersValidation ? splitFiltersValidation.groupedFilters.bySet : [];
|
|
31
|
-
// There is no need to listen for redis 'error' event, because in that case ioredis calls will be rejected and handled by redis storage adapters.
|
|
32
|
-
// But it is done just to avoid getting the ioredis message `Unhandled error event`.
|
|
33
|
-
_this.redis.on('error', function (e) {
|
|
34
|
-
_this.redisError = e;
|
|
35
|
-
});
|
|
36
|
-
_this.redis.on('connect', function () {
|
|
37
|
-
_this.redisError = undefined;
|
|
38
|
-
});
|
|
39
|
-
return _this;
|
|
40
|
-
}
|
|
41
|
-
SplitsCacheInRedis.prototype._decrementCounts = function (split) {
|
|
42
|
-
var _this = this;
|
|
43
|
-
var ttKey = this.keys.buildTrafficTypeKey(split.trafficTypeName);
|
|
44
|
-
return this.redis.decr(ttKey).then(function (count) {
|
|
45
|
-
if (count === 0)
|
|
46
|
-
return _this.redis.del(ttKey);
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
SplitsCacheInRedis.prototype._incrementCounts = function (split) {
|
|
50
|
-
var ttKey = this.keys.buildTrafficTypeKey(split.trafficTypeName);
|
|
51
|
-
return this.redis.incr(ttKey);
|
|
52
|
-
};
|
|
53
|
-
SplitsCacheInRedis.prototype._updateFlagSets = function (featureFlagName, flagSetsOfRemovedFlag, flagSetsOfAddedFlag) {
|
|
54
|
-
var _this = this;
|
|
55
|
-
var removeFromFlagSets = (0, sets_1.returnDifference)(flagSetsOfRemovedFlag, flagSetsOfAddedFlag);
|
|
56
|
-
var addToFlagSets = (0, sets_1.returnDifference)(flagSetsOfAddedFlag, flagSetsOfRemovedFlag);
|
|
57
|
-
if (this.flagSetsFilter.length > 0) {
|
|
58
|
-
addToFlagSets = addToFlagSets.filter(function (flagSet) {
|
|
59
|
-
return _this.flagSetsFilter.some(function (filterFlagSet) { return filterFlagSet === flagSet; });
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
var items = [featureFlagName];
|
|
63
|
-
return Promise.all((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], removeFromFlagSets.map(function (flagSetName) { return _this.redis.srem(_this.keys.buildFlagSetKey(flagSetName), items); }), true), addToFlagSets.map(function (flagSetName) { return _this.redis.sadd(_this.keys.buildFlagSetKey(flagSetName), items); }), true));
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Add a given split.
|
|
67
|
-
* The returned promise is resolved when the operation success
|
|
68
|
-
* or rejected if it fails (e.g., redis operation fails)
|
|
69
|
-
*/
|
|
70
|
-
SplitsCacheInRedis.prototype.addSplit = function (split) {
|
|
71
|
-
var _this = this;
|
|
72
|
-
var name = split.name;
|
|
73
|
-
var splitKey = this.keys.buildSplitKey(name);
|
|
74
|
-
return this.redis.get(splitKey).then(function (splitFromStorage) {
|
|
75
|
-
// handling parsing error
|
|
76
|
-
var parsedPreviousSplit, stringifiedNewSplit;
|
|
77
|
-
try {
|
|
78
|
-
parsedPreviousSplit = splitFromStorage ? JSON.parse(splitFromStorage) : undefined;
|
|
79
|
-
stringifiedNewSplit = JSON.stringify(split);
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
throw new Error('Error parsing feature flag definition: ' + e);
|
|
83
|
-
}
|
|
84
|
-
return _this.redis.set(splitKey, stringifiedNewSplit).then(function () {
|
|
85
|
-
// avoid unnecessary increment/decrement operations
|
|
86
|
-
if (parsedPreviousSplit && parsedPreviousSplit.trafficTypeName === split.trafficTypeName)
|
|
87
|
-
return;
|
|
88
|
-
// update traffic type counts
|
|
89
|
-
return _this._incrementCounts(split).then(function () {
|
|
90
|
-
if (parsedPreviousSplit)
|
|
91
|
-
return _this._decrementCounts(parsedPreviousSplit);
|
|
92
|
-
});
|
|
93
|
-
}).then(function () { return _this._updateFlagSets(name, parsedPreviousSplit && parsedPreviousSplit.sets, split.sets); });
|
|
94
|
-
}).then(function () { return true; });
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* Remove a given split.
|
|
98
|
-
* The returned promise is resolved when the operation success, with true or false indicating if the split existed (and was removed) or not.
|
|
99
|
-
* or rejected if it fails (e.g., redis operation fails).
|
|
100
|
-
*/
|
|
101
|
-
SplitsCacheInRedis.prototype.removeSplit = function (name) {
|
|
102
|
-
var _this = this;
|
|
103
|
-
return this.getSplit(name).then(function (split) {
|
|
104
|
-
if (split) {
|
|
105
|
-
return _this._decrementCounts(split).then(function () { return _this._updateFlagSets(name, split.sets); });
|
|
106
|
-
}
|
|
107
|
-
}).then(function () {
|
|
108
|
-
return _this.redis.del(_this.keys.buildSplitKey(name)).then(function (status) { return status === 1; });
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Get split definition or null if it's not defined.
|
|
113
|
-
* Returned promise is rejected if redis operation fails.
|
|
114
|
-
*/
|
|
115
|
-
SplitsCacheInRedis.prototype.getSplit = function (name) {
|
|
116
|
-
if (this.redisError) {
|
|
117
|
-
this.log.error(constants_1.LOG_PREFIX + this.redisError);
|
|
118
|
-
return Promise.reject(this.redisError);
|
|
119
|
-
}
|
|
120
|
-
return this.redis.get(this.keys.buildSplitKey(name))
|
|
121
|
-
.then(function (maybeSplit) { return maybeSplit && JSON.parse(maybeSplit); });
|
|
122
|
-
};
|
|
123
|
-
/**
|
|
124
|
-
* Set till number.
|
|
125
|
-
* The returned promise is resolved when the operation success,
|
|
126
|
-
* or rejected if it fails.
|
|
127
|
-
*/
|
|
128
|
-
SplitsCacheInRedis.prototype.setChangeNumber = function (changeNumber) {
|
|
129
|
-
return this.redis.set(this.keys.buildSplitsTillKey(), changeNumber + '').then(function (status) { return status === 'OK'; });
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* Get till number or -1 if it's not defined.
|
|
133
|
-
* The returned promise is resolved with the changeNumber or -1 if it doesn't exist or a redis operation fails.
|
|
134
|
-
* The promise will never be rejected.
|
|
135
|
-
*/
|
|
136
|
-
SplitsCacheInRedis.prototype.getChangeNumber = function () {
|
|
137
|
-
var _this = this;
|
|
138
|
-
return this.redis.get(this.keys.buildSplitsTillKey()).then(function (value) {
|
|
139
|
-
var i = parseInt(value, 10);
|
|
140
|
-
return (0, lang_1.isNaNNumber)(i) ? -1 : i;
|
|
141
|
-
}).catch(function (e) {
|
|
142
|
-
_this.log.error(constants_1.LOG_PREFIX + 'Could not retrieve changeNumber from storage. Error: ' + e);
|
|
143
|
-
return -1;
|
|
144
|
-
});
|
|
145
|
-
};
|
|
146
|
-
/**
|
|
147
|
-
* Get list of all split definitions.
|
|
148
|
-
* The returned promise is resolved with the list of split definitions,
|
|
149
|
-
* or rejected if redis operation fails.
|
|
150
|
-
*/
|
|
151
|
-
// @TODO we need to benchmark which is the maximun number of commands we could pipeline without kill redis performance.
|
|
152
|
-
SplitsCacheInRedis.prototype.getAll = function () {
|
|
153
|
-
var _this = this;
|
|
154
|
-
return this.redis.keys(this.keys.searchPatternForSplitKeys())
|
|
155
|
-
.then(function (listOfKeys) { return _this.redis.pipeline(listOfKeys.map(function (k) { return ['get', k]; })).exec(); })
|
|
156
|
-
.then(processPipelineAnswer)
|
|
157
|
-
.then(function (splitDefinitions) { return splitDefinitions.map(function (splitDefinition) {
|
|
158
|
-
return JSON.parse(splitDefinition);
|
|
159
|
-
}); });
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* Get list of split names.
|
|
163
|
-
* The returned promise is resolved with the list of split names,
|
|
164
|
-
* or rejected if redis operation fails.
|
|
165
|
-
*/
|
|
166
|
-
SplitsCacheInRedis.prototype.getSplitNames = function () {
|
|
167
|
-
var _this = this;
|
|
168
|
-
return this.redis.keys(this.keys.searchPatternForSplitKeys()).then(function (listOfKeys) { return listOfKeys.map(_this.keys.extractKey); });
|
|
169
|
-
};
|
|
170
|
-
/**
|
|
171
|
-
* Get list of feature flag names related to a given list of flag set names.
|
|
172
|
-
* The returned promise is resolved with the list of feature flag names per flag set,
|
|
173
|
-
* or rejected if the pipelined redis operation fails (e.g., timeout).
|
|
174
|
-
*/
|
|
175
|
-
SplitsCacheInRedis.prototype.getNamesByFlagSets = function (flagSets) {
|
|
176
|
-
var _this = this;
|
|
177
|
-
return this.redis.pipeline(flagSets.map(function (flagSet) { return ['smembers', _this.keys.buildFlagSetKey(flagSet)]; })).exec()
|
|
178
|
-
.then(function (results) { return results.map(function (_a, index) {
|
|
179
|
-
var e = _a[0], value = _a[1];
|
|
180
|
-
if (e === null)
|
|
181
|
-
return value;
|
|
182
|
-
_this.log.error(constants_1.LOG_PREFIX + ("Could not read result from get members of flag set " + flagSets[index] + " due to an error: " + e));
|
|
183
|
-
}); })
|
|
184
|
-
.then(function (namesByFlagSets) { return namesByFlagSets.map(function (namesByFlagSet) { return new Set(namesByFlagSet); }); });
|
|
185
|
-
};
|
|
186
|
-
/**
|
|
187
|
-
* Check traffic type existence.
|
|
188
|
-
* The returned promise is resolved with a boolean indicating whether the TT exist or not.
|
|
189
|
-
* In case of redis operation failure, the promise resolves with a true value, assuming that the TT might exist.
|
|
190
|
-
* It will never be rejected.
|
|
191
|
-
*/
|
|
192
|
-
SplitsCacheInRedis.prototype.trafficTypeExists = function (trafficType) {
|
|
193
|
-
var _this = this;
|
|
194
|
-
// If there is a number there should be > 0, otherwise the TT is considered as not existent.
|
|
195
|
-
return this.redis.get(this.keys.buildTrafficTypeKey(trafficType))
|
|
196
|
-
.then(function (ttCount) {
|
|
197
|
-
if (ttCount === null)
|
|
198
|
-
return false; // if entry doesn't exist, means that TT doesn't exist
|
|
199
|
-
ttCount = parseInt(ttCount, 10);
|
|
200
|
-
if (!(0, lang_1.isFiniteNumber)(ttCount) || ttCount < 0) {
|
|
201
|
-
_this.log.info(constants_1.LOG_PREFIX + ("Could not validate traffic type existence of " + trafficType + " due to data corruption of some sorts."));
|
|
202
|
-
return false;
|
|
203
|
-
}
|
|
204
|
-
return ttCount > 0;
|
|
205
|
-
})
|
|
206
|
-
.catch(function (e) {
|
|
207
|
-
_this.log.error(constants_1.LOG_PREFIX + ("Could not validate traffic type existence of " + trafficType + " due to an error: " + e + "."));
|
|
208
|
-
// If there is an error, bypass the validation so the event can get tracked.
|
|
209
|
-
return true;
|
|
210
|
-
});
|
|
211
|
-
};
|
|
212
|
-
// @TODO remove or implement. It is not being used.
|
|
213
|
-
SplitsCacheInRedis.prototype.clear = function () {
|
|
214
|
-
return Promise.resolve();
|
|
215
|
-
};
|
|
216
|
-
/**
|
|
217
|
-
* Fetches multiple splits definitions.
|
|
218
|
-
* Returned promise is rejected if redis operation fails.
|
|
219
|
-
*/
|
|
220
|
-
SplitsCacheInRedis.prototype.getSplits = function (names) {
|
|
221
|
-
var _a;
|
|
222
|
-
var _this = this;
|
|
223
|
-
if (this.redisError) {
|
|
224
|
-
this.log.error(constants_1.LOG_PREFIX + this.redisError);
|
|
225
|
-
return Promise.reject(this.redisError);
|
|
226
|
-
}
|
|
227
|
-
var keys = names.map(function (name) { return _this.keys.buildSplitKey(name); });
|
|
228
|
-
return (_a = this.redis).mget.apply(_a, keys).then(function (splitDefinitions) {
|
|
229
|
-
var splits = {};
|
|
230
|
-
names.forEach(function (name, idx) {
|
|
231
|
-
var split = splitDefinitions[idx];
|
|
232
|
-
splits[name] = split && JSON.parse(split);
|
|
233
|
-
});
|
|
234
|
-
return Promise.resolve(splits);
|
|
235
|
-
})
|
|
236
|
-
.catch(function (e) {
|
|
237
|
-
_this.log.error(constants_1.LOG_PREFIX + ("Could not grab feature flags due to an error: " + e + "."));
|
|
238
|
-
return Promise.reject(e);
|
|
239
|
-
});
|
|
240
|
-
};
|
|
241
|
-
return SplitsCacheInRedis;
|
|
242
|
-
}(AbstractSplitsCacheAsync_1.AbstractSplitsCacheAsync));
|
|
243
|
-
exports.SplitsCacheInRedis = SplitsCacheInRedis;
|