@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,137 +0,0 @@
|
|
|
1
|
-
import { startsWith, toNumber } from '../../utils/lang';
|
|
2
|
-
import { setToArray } from '../../utils/lang/sets';
|
|
3
|
-
/**
|
|
4
|
-
* Creates a IPluggableStorageWrapper implementation that stores items in memory.
|
|
5
|
-
* The `_cache` property is the object were items are stored.
|
|
6
|
-
* Intended for testing purposes.
|
|
7
|
-
*
|
|
8
|
-
* @param connDelay - delay in millis for `connect` resolve. If not provided, `connect` resolves immediately.
|
|
9
|
-
*/
|
|
10
|
-
export function inMemoryWrapperFactory(connDelay) {
|
|
11
|
-
var _cache = {};
|
|
12
|
-
var _connDelay = connDelay;
|
|
13
|
-
return {
|
|
14
|
-
/** Holds items (for key-value operations), list of items (for list operations) and set of items (for set operations) */
|
|
15
|
-
_cache: _cache,
|
|
16
|
-
get: function (key) {
|
|
17
|
-
return Promise.resolve(key in _cache ? _cache[key] : null);
|
|
18
|
-
},
|
|
19
|
-
set: function (key, value) {
|
|
20
|
-
var result = key in _cache;
|
|
21
|
-
_cache[key] = value;
|
|
22
|
-
return Promise.resolve(result);
|
|
23
|
-
},
|
|
24
|
-
getAndSet: function (key, value) {
|
|
25
|
-
var result = key in _cache ? _cache[key] : null;
|
|
26
|
-
_cache[key] = value;
|
|
27
|
-
return Promise.resolve(result);
|
|
28
|
-
},
|
|
29
|
-
del: function (key) {
|
|
30
|
-
var result = key in _cache;
|
|
31
|
-
delete _cache[key];
|
|
32
|
-
return Promise.resolve(result);
|
|
33
|
-
},
|
|
34
|
-
getKeysByPrefix: function (prefix) {
|
|
35
|
-
return Promise.resolve(Object.keys(_cache).filter(function (key) { return startsWith(key, prefix); }));
|
|
36
|
-
},
|
|
37
|
-
incr: function (key, increment) {
|
|
38
|
-
if (increment === void 0) { increment = 1; }
|
|
39
|
-
if (key in _cache) {
|
|
40
|
-
var count = toNumber(_cache[key]) + increment;
|
|
41
|
-
if (isNaN(count))
|
|
42
|
-
return Promise.reject('Given key is not a number');
|
|
43
|
-
_cache[key] = count + '';
|
|
44
|
-
return Promise.resolve(count);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
_cache[key] = '' + increment;
|
|
48
|
-
return Promise.resolve(1);
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
decr: function (key, decrement) {
|
|
52
|
-
if (decrement === void 0) { decrement = 1; }
|
|
53
|
-
if (key in _cache) {
|
|
54
|
-
var count = toNumber(_cache[key]) - decrement;
|
|
55
|
-
if (isNaN(count))
|
|
56
|
-
return Promise.reject('Given key is not a number');
|
|
57
|
-
_cache[key] = count + '';
|
|
58
|
-
return Promise.resolve(count);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
_cache[key] = '-' + decrement;
|
|
62
|
-
return Promise.resolve(-1);
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
getMany: function (keys) {
|
|
66
|
-
return Promise.resolve(keys.map(function (key) { return _cache[key] ? _cache[key] : null; }));
|
|
67
|
-
},
|
|
68
|
-
pushItems: function (key, items) {
|
|
69
|
-
if (!(key in _cache))
|
|
70
|
-
_cache[key] = [];
|
|
71
|
-
var list = _cache[key];
|
|
72
|
-
if (Array.isArray(list)) {
|
|
73
|
-
list.push.apply(list, items);
|
|
74
|
-
return Promise.resolve();
|
|
75
|
-
}
|
|
76
|
-
return Promise.reject('key is not a list');
|
|
77
|
-
},
|
|
78
|
-
popItems: function (key, count) {
|
|
79
|
-
var list = _cache[key];
|
|
80
|
-
return Promise.resolve(Array.isArray(list) ? list.splice(0, count) : []);
|
|
81
|
-
},
|
|
82
|
-
getItemsCount: function (key) {
|
|
83
|
-
var list = _cache[key];
|
|
84
|
-
return Promise.resolve(Array.isArray(list) ? list.length : 0);
|
|
85
|
-
},
|
|
86
|
-
itemContains: function (key, item) {
|
|
87
|
-
var set = _cache[key];
|
|
88
|
-
if (!set)
|
|
89
|
-
return Promise.resolve(false);
|
|
90
|
-
if (set instanceof Set)
|
|
91
|
-
return Promise.resolve(set.has(item));
|
|
92
|
-
return Promise.reject('key is not a set');
|
|
93
|
-
},
|
|
94
|
-
addItems: function (key, items) {
|
|
95
|
-
if (!(key in _cache))
|
|
96
|
-
_cache[key] = new Set();
|
|
97
|
-
var set = _cache[key];
|
|
98
|
-
if (set instanceof Set) {
|
|
99
|
-
items.forEach(function (item) { return set.add(item); });
|
|
100
|
-
return Promise.resolve();
|
|
101
|
-
}
|
|
102
|
-
return Promise.reject('key is not a set');
|
|
103
|
-
},
|
|
104
|
-
removeItems: function (key, items) {
|
|
105
|
-
if (!(key in _cache))
|
|
106
|
-
_cache[key] = new Set();
|
|
107
|
-
var set = _cache[key];
|
|
108
|
-
if (set instanceof Set) {
|
|
109
|
-
items.forEach(function (item) { return set.delete(item); });
|
|
110
|
-
return Promise.resolve();
|
|
111
|
-
}
|
|
112
|
-
return Promise.reject('key is not a set');
|
|
113
|
-
},
|
|
114
|
-
getItems: function (key) {
|
|
115
|
-
var set = _cache[key];
|
|
116
|
-
if (!set)
|
|
117
|
-
return Promise.resolve([]);
|
|
118
|
-
if (set instanceof Set)
|
|
119
|
-
return Promise.resolve(setToArray(set));
|
|
120
|
-
return Promise.reject('key is not a set');
|
|
121
|
-
},
|
|
122
|
-
// always connects and disconnects
|
|
123
|
-
connect: function () {
|
|
124
|
-
if (typeof _connDelay === 'number') {
|
|
125
|
-
return new Promise(function (res) { return setTimeout(res, _connDelay); });
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
return Promise.resolve();
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
disconnect: function () { return Promise.resolve(); },
|
|
132
|
-
// for testing
|
|
133
|
-
_setConnDelay: function (connDelay) {
|
|
134
|
-
_connDelay = connDelay;
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
2
|
-
import { KeyBuilderSS } from '../KeyBuilderSS';
|
|
3
|
-
import { SplitsCachePluggable } from './SplitsCachePluggable';
|
|
4
|
-
import { SegmentsCachePluggable } from './SegmentsCachePluggable';
|
|
5
|
-
import { ImpressionsCachePluggable } from './ImpressionsCachePluggable';
|
|
6
|
-
import { EventsCachePluggable } from './EventsCachePluggable';
|
|
7
|
-
import { wrapperAdapter, METHODS_TO_PROMISE_WRAP } from './wrapperAdapter';
|
|
8
|
-
import { isObject } from '../../utils/lang';
|
|
9
|
-
import { getStorageHash, validatePrefix } from '../KeyBuilder';
|
|
10
|
-
import { CONSUMER_PARTIAL_MODE, STORAGE_PLUGGABLE } from '../../utils/constants';
|
|
11
|
-
import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
|
|
12
|
-
import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
|
|
13
|
-
import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
|
|
14
|
-
import { shouldRecordTelemetry, TelemetryCacheInMemory } from '../inMemory/TelemetryCacheInMemory';
|
|
15
|
-
import { TelemetryCachePluggable } from './TelemetryCachePluggable';
|
|
16
|
-
import { ImpressionCountsCachePluggable } from './ImpressionCountsCachePluggable';
|
|
17
|
-
import { UniqueKeysCachePluggable } from './UniqueKeysCachePluggable';
|
|
18
|
-
import { UniqueKeysCacheInMemory } from '../inMemory/UniqueKeysCacheInMemory';
|
|
19
|
-
import { UniqueKeysCacheInMemoryCS } from '../inMemory/UniqueKeysCacheInMemoryCS';
|
|
20
|
-
import { metadataBuilder } from '../utils';
|
|
21
|
-
import { LOG_PREFIX } from '../pluggable/constants';
|
|
22
|
-
import { RBSegmentsCachePluggable } from './RBSegmentsCachePluggable';
|
|
23
|
-
var NO_VALID_WRAPPER = 'Expecting pluggable storage `wrapper` in options, but no valid wrapper instance was provided.';
|
|
24
|
-
var NO_VALID_WRAPPER_INTERFACE = 'The provided wrapper instance doesn’t follow the expected interface. Check our docs.';
|
|
25
|
-
/**
|
|
26
|
-
* Validate pluggable storage factory options.
|
|
27
|
-
*
|
|
28
|
-
* @param options - user options
|
|
29
|
-
* @throws Will throw an error if the options are invalid. Example: wrapper is not provided or doesn't have some methods.
|
|
30
|
-
*/
|
|
31
|
-
function validatePluggableStorageOptions(options) {
|
|
32
|
-
if (!isObject(options) || !isObject(options.wrapper))
|
|
33
|
-
throw new Error(NO_VALID_WRAPPER);
|
|
34
|
-
var wrapper = options.wrapper;
|
|
35
|
-
var missingMethods = METHODS_TO_PROMISE_WRAP.filter(function (method) { return typeof wrapper[method] !== 'function'; });
|
|
36
|
-
if (missingMethods.length)
|
|
37
|
-
throw new Error(NO_VALID_WRAPPER_INTERFACE + " The following methods are missing or invalid: " + missingMethods);
|
|
38
|
-
}
|
|
39
|
-
// Async return type in `client.track` method on consumer partial mode
|
|
40
|
-
// No need to promisify impressions cache
|
|
41
|
-
function promisifyEventsTrack(events) {
|
|
42
|
-
var origTrack = events.track;
|
|
43
|
-
events.track = function () {
|
|
44
|
-
return Promise.resolve(origTrack.apply(this, arguments));
|
|
45
|
-
};
|
|
46
|
-
return events;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Pluggable storage factory for consumer server-side & client-side SplitFactory.
|
|
50
|
-
*/
|
|
51
|
-
export function PluggableStorage(options) {
|
|
52
|
-
validatePluggableStorageOptions(options);
|
|
53
|
-
var prefix = validatePrefix(options.prefix);
|
|
54
|
-
function PluggableStorageFactory(params) {
|
|
55
|
-
var onReadyCb = params.onReadyCb, settings = params.settings, _a = params.settings, log = _a.log, mode = _a.mode, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize;
|
|
56
|
-
var metadata = metadataBuilder(settings);
|
|
57
|
-
var keys = new KeyBuilderSS(prefix, metadata);
|
|
58
|
-
var wrapper = wrapperAdapter(log, options.wrapper);
|
|
59
|
-
var isSynchronizer = mode === undefined; // If mode is not defined, the synchronizer is running
|
|
60
|
-
var isPartialConsumer = mode === CONSUMER_PARTIAL_MODE;
|
|
61
|
-
var telemetry = shouldRecordTelemetry(params) || isSynchronizer ?
|
|
62
|
-
isPartialConsumer ?
|
|
63
|
-
new TelemetryCacheInMemory() :
|
|
64
|
-
new TelemetryCachePluggable(log, keys, wrapper) :
|
|
65
|
-
undefined;
|
|
66
|
-
var impressionCountsCache = isPartialConsumer ?
|
|
67
|
-
new ImpressionCountsCacheInMemory() :
|
|
68
|
-
new ImpressionCountsCachePluggable(log, keys.buildImpressionsCountKey(), wrapper);
|
|
69
|
-
var uniqueKeysCache = isPartialConsumer ?
|
|
70
|
-
settings.core.key === undefined ? new UniqueKeysCacheInMemory() : new UniqueKeysCacheInMemoryCS() :
|
|
71
|
-
new UniqueKeysCachePluggable(log, keys.buildUniqueKeysKey(), wrapper);
|
|
72
|
-
// Connects to wrapper and emits SDK_READY event on main client
|
|
73
|
-
var connectPromise = wrapper.connect().then(function () {
|
|
74
|
-
if (isSynchronizer) {
|
|
75
|
-
// @TODO reuse InLocalStorage::validateCache logic
|
|
76
|
-
// In standalone or producer mode, clear storage if SDK key, flags filter criteria or flags spec version was modified
|
|
77
|
-
return wrapper.get(keys.buildHashKey()).then(function (hash) {
|
|
78
|
-
var currentHash = getStorageHash(settings);
|
|
79
|
-
if (hash !== currentHash) {
|
|
80
|
-
log.info(LOG_PREFIX + 'Storage HASH has changed (SDK key, flags filter criteria or flags spec version was modified). Clearing cache');
|
|
81
|
-
return wrapper.getKeysByPrefix(keys.prefix + ".").then(function (storageKeys) {
|
|
82
|
-
return Promise.all(storageKeys.map(function (storageKey) { return wrapper.del(storageKey); }));
|
|
83
|
-
}).then(function () { return wrapper.set(keys.buildHashKey(), currentHash); });
|
|
84
|
-
}
|
|
85
|
-
}).then(function () {
|
|
86
|
-
onReadyCb();
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// Start periodic flush of async storages if not running synchronizer (producer mode)
|
|
91
|
-
if (impressionCountsCache.start)
|
|
92
|
-
impressionCountsCache.start();
|
|
93
|
-
if (uniqueKeysCache.start)
|
|
94
|
-
uniqueKeysCache.start();
|
|
95
|
-
if (telemetry && telemetry.recordConfig)
|
|
96
|
-
telemetry.recordConfig();
|
|
97
|
-
onReadyCb();
|
|
98
|
-
}
|
|
99
|
-
}).catch(function (e) {
|
|
100
|
-
e = e || new Error('Error connecting wrapper');
|
|
101
|
-
onReadyCb(e);
|
|
102
|
-
return e; // Propagate error for shared clients
|
|
103
|
-
});
|
|
104
|
-
return {
|
|
105
|
-
splits: new SplitsCachePluggable(log, keys, wrapper, settings.sync.__splitFiltersValidation),
|
|
106
|
-
rbSegments: new RBSegmentsCachePluggable(log, keys, wrapper),
|
|
107
|
-
segments: new SegmentsCachePluggable(log, keys, wrapper),
|
|
108
|
-
impressions: isPartialConsumer ? new ImpressionsCacheInMemory(impressionsQueueSize) : new ImpressionsCachePluggable(log, keys.buildImpressionsKey(), wrapper, metadata),
|
|
109
|
-
impressionCounts: impressionCountsCache,
|
|
110
|
-
events: isPartialConsumer ? promisifyEventsTrack(new EventsCacheInMemory(eventsQueueSize)) : new EventsCachePluggable(log, keys.buildEventsKey(), wrapper, metadata),
|
|
111
|
-
telemetry: telemetry,
|
|
112
|
-
uniqueKeys: uniqueKeysCache,
|
|
113
|
-
// Stop periodic flush and disconnect the underlying storage
|
|
114
|
-
destroy: function () {
|
|
115
|
-
return Promise.all(isSynchronizer ? [] : [
|
|
116
|
-
impressionCountsCache.stop && impressionCountsCache.stop(),
|
|
117
|
-
uniqueKeysCache.stop && uniqueKeysCache.stop(),
|
|
118
|
-
]).then(function () { return wrapper.disconnect(); });
|
|
119
|
-
},
|
|
120
|
-
// emits SDK_READY event on shared clients and returns a reference to the storage
|
|
121
|
-
shared: function (_, onReadyCb) {
|
|
122
|
-
connectPromise.then(onReadyCb);
|
|
123
|
-
return __assign(__assign({}, this), {
|
|
124
|
-
// no-op destroy, to disconnect the wrapper only when the main client is destroyed
|
|
125
|
-
destroy: function () { } });
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
PluggableStorageFactory.type = STORAGE_PLUGGABLE;
|
|
130
|
-
return PluggableStorageFactory;
|
|
131
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { LOG_PREFIX } from './constants';
|
|
2
|
-
export var METHODS_TO_PROMISE_WRAP = [
|
|
3
|
-
'get',
|
|
4
|
-
'set',
|
|
5
|
-
'getAndSet',
|
|
6
|
-
'del',
|
|
7
|
-
'getKeysByPrefix',
|
|
8
|
-
'incr',
|
|
9
|
-
'decr',
|
|
10
|
-
'getMany',
|
|
11
|
-
'pushItems',
|
|
12
|
-
'popItems',
|
|
13
|
-
'getItemsCount',
|
|
14
|
-
'itemContains',
|
|
15
|
-
'addItems',
|
|
16
|
-
'removeItems',
|
|
17
|
-
'getItems',
|
|
18
|
-
'connect',
|
|
19
|
-
'disconnect'
|
|
20
|
-
];
|
|
21
|
-
/**
|
|
22
|
-
* Adapter of the Pluggable Storage Wrapper.
|
|
23
|
-
* Used to handle exceptions as rejected promises, in order to simplify the error handling on storages.
|
|
24
|
-
*
|
|
25
|
-
* @param log - logger instance
|
|
26
|
-
* @param wrapper - storage wrapper to adapt
|
|
27
|
-
* @returns an adapted version of the given storage wrapper
|
|
28
|
-
*/
|
|
29
|
-
export function wrapperAdapter(log, wrapper) {
|
|
30
|
-
var wrapperAdapter = {};
|
|
31
|
-
METHODS_TO_PROMISE_WRAP.forEach(function (method) {
|
|
32
|
-
// Logs error and wraps it into a rejected promise.
|
|
33
|
-
function handleError(e) {
|
|
34
|
-
log.error(LOG_PREFIX + " Wrapper '" + method + "' operation threw an error. Message: " + e);
|
|
35
|
-
return Promise.reject(e);
|
|
36
|
-
}
|
|
37
|
-
wrapperAdapter[method] = function () {
|
|
38
|
-
try {
|
|
39
|
-
// @ts-ignore
|
|
40
|
-
return wrapper[method].apply(wrapper, arguments).then(function (value) { return value; }).catch(handleError);
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
return handleError(e);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
// @ts-ignore
|
|
48
|
-
return wrapperAdapter;
|
|
49
|
-
}
|
package/esm/storages/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/esm/storages/utils.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// Shared utils for Redis and Pluggable storage
|
|
2
|
-
import { UNKNOWN } from '../utils/constants';
|
|
3
|
-
import { MAX_LATENCY_BUCKET_COUNT } from './inMemory/TelemetryCacheInMemory';
|
|
4
|
-
import { METHOD_NAMES } from './KeyBuilderSS';
|
|
5
|
-
export function metadataBuilder(settings) {
|
|
6
|
-
return {
|
|
7
|
-
s: settings.version,
|
|
8
|
-
i: settings.runtime.ip || UNKNOWN,
|
|
9
|
-
n: settings.runtime.hostname || UNKNOWN,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
// Converts impressions to be stored in Redis or pluggable storage.
|
|
13
|
-
export function impressionsToJSON(impressions, metadata) {
|
|
14
|
-
return impressions.map(function (impression) {
|
|
15
|
-
var impressionWithMetadata = {
|
|
16
|
-
m: metadata,
|
|
17
|
-
i: {
|
|
18
|
-
k: impression.keyName,
|
|
19
|
-
b: impression.bucketingKey,
|
|
20
|
-
f: impression.feature,
|
|
21
|
-
t: impression.treatment,
|
|
22
|
-
r: impression.label,
|
|
23
|
-
c: impression.changeNumber,
|
|
24
|
-
m: impression.time,
|
|
25
|
-
pt: impression.pt,
|
|
26
|
-
properties: impression.properties
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
return JSON.stringify(impressionWithMetadata);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
// Utilities used by TelemetryCacheInRedis and TelemetryCachePluggable
|
|
33
|
-
var REVERSE_METHOD_NAMES = Object.keys(METHOD_NAMES).reduce(function (acc, key) {
|
|
34
|
-
acc[METHOD_NAMES[key]] = key;
|
|
35
|
-
return acc;
|
|
36
|
-
}, {});
|
|
37
|
-
export function parseMetadata(field) {
|
|
38
|
-
var parts = field.split('/');
|
|
39
|
-
if (parts.length !== 3)
|
|
40
|
-
return "invalid subsection count. Expected 3, got: " + parts.length;
|
|
41
|
-
var s = parts[0] /* metadata.s */, n = parts[1] /* metadata.n */, i = parts[2] /* metadata.i */;
|
|
42
|
-
return [JSON.stringify({ s: s, n: n, i: i })];
|
|
43
|
-
}
|
|
44
|
-
export function parseExceptionField(field) {
|
|
45
|
-
var parts = field.split('/');
|
|
46
|
-
if (parts.length !== 4)
|
|
47
|
-
return "invalid subsection count. Expected 4, got: " + parts.length;
|
|
48
|
-
var s = parts[0] /* metadata.s */, n = parts[1] /* metadata.n */, i = parts[2] /* metadata.i */, m = parts[3];
|
|
49
|
-
var method = REVERSE_METHOD_NAMES[m];
|
|
50
|
-
if (!method)
|
|
51
|
-
return "unknown method '" + m + "'";
|
|
52
|
-
return [JSON.stringify({ s: s, n: n, i: i }), method];
|
|
53
|
-
}
|
|
54
|
-
export function parseLatencyField(field) {
|
|
55
|
-
var parts = field.split('/');
|
|
56
|
-
if (parts.length !== 5)
|
|
57
|
-
return "invalid subsection count. Expected 5, got: " + parts.length;
|
|
58
|
-
var s = parts[0] /* metadata.s */, n = parts[1] /* metadata.n */, i = parts[2] /* metadata.i */, m = parts[3], b = parts[4];
|
|
59
|
-
var method = REVERSE_METHOD_NAMES[m];
|
|
60
|
-
if (!method)
|
|
61
|
-
return "unknown method '" + m + "'";
|
|
62
|
-
var bucket = parseInt(b);
|
|
63
|
-
if (isNaN(bucket) || bucket >= MAX_LATENCY_BUCKET_COUNT)
|
|
64
|
-
return "invalid bucket. Expected a number between 0 and " + (MAX_LATENCY_BUCKET_COUNT - 1) + ", got: " + b;
|
|
65
|
-
return [JSON.stringify({ s: s, n: n, i: i }), method, bucket];
|
|
66
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { splitsParserFromSettingsFactory } from './splitsParser/splitsParserFromSettings';
|
|
2
|
-
import { syncManagerOfflineFactory } from './syncManagerOffline';
|
|
3
|
-
// Singleton instance of the factory function for offline SyncManager from object
|
|
4
|
-
// SDK instances instantiate their SyncManagers with the same factory
|
|
5
|
-
export var localhostFromObjectFactory = syncManagerOfflineFactory(splitsParserFromSettingsFactory);
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { isString } from '../../../utils/lang';
|
|
2
|
-
export function parseCondition(data) {
|
|
3
|
-
var treatment = data.treatment;
|
|
4
|
-
if (data.keys) {
|
|
5
|
-
return {
|
|
6
|
-
conditionType: 'WHITELIST',
|
|
7
|
-
matcherGroup: {
|
|
8
|
-
combiner: 'AND',
|
|
9
|
-
matchers: [
|
|
10
|
-
{
|
|
11
|
-
keySelector: null,
|
|
12
|
-
matcherType: 'WHITELIST',
|
|
13
|
-
negate: false,
|
|
14
|
-
whitelistMatcherData: {
|
|
15
|
-
whitelist: isString(data.keys) ? [data.keys] : data.keys
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
},
|
|
20
|
-
partitions: [
|
|
21
|
-
{
|
|
22
|
-
treatment: treatment,
|
|
23
|
-
size: 100
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
label: "whitelisted " + treatment
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return {
|
|
31
|
-
conditionType: 'ROLLOUT',
|
|
32
|
-
matcherGroup: {
|
|
33
|
-
combiner: 'AND',
|
|
34
|
-
matchers: [
|
|
35
|
-
{
|
|
36
|
-
keySelector: null,
|
|
37
|
-
matcherType: 'ALL_KEYS',
|
|
38
|
-
negate: false
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
partitions: [
|
|
43
|
-
{
|
|
44
|
-
treatment: treatment,
|
|
45
|
-
size: 100
|
|
46
|
-
}
|
|
47
|
-
],
|
|
48
|
-
label: 'default rule'
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { isObject, forOwn, merge } from '../../../utils/lang';
|
|
2
|
-
import { parseCondition } from './parseCondition';
|
|
3
|
-
function hasTreatmentChanged(prev, curr) {
|
|
4
|
-
if (typeof prev !== typeof curr)
|
|
5
|
-
return true;
|
|
6
|
-
if (typeof prev === 'string') { // strings treatments, just compare
|
|
7
|
-
return prev !== curr;
|
|
8
|
-
}
|
|
9
|
-
else { // has treatment and config, compare both
|
|
10
|
-
return prev.treatment !== curr.treatment || prev.config !== curr.config;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export function splitsParserFromSettingsFactory() {
|
|
14
|
-
var previousMock = { 'emptyMock': '1' };
|
|
15
|
-
function mockUpdated(currentData) {
|
|
16
|
-
var names = Object.keys(currentData);
|
|
17
|
-
// Different amount of items
|
|
18
|
-
if (names.length !== Object.keys(previousMock).length) {
|
|
19
|
-
previousMock = merge({}, currentData);
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
return names.some(function (name) {
|
|
23
|
-
var newSplit = !previousMock[name];
|
|
24
|
-
var newTreatment = hasTreatmentChanged(previousMock[name], currentData[name]);
|
|
25
|
-
var changed = newSplit || newTreatment;
|
|
26
|
-
if (changed)
|
|
27
|
-
previousMock = merge({}, currentData);
|
|
28
|
-
return changed;
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* @param settings - validated object with mocked features mapping.
|
|
34
|
-
*/
|
|
35
|
-
return function splitsParserFromSettings(settings) {
|
|
36
|
-
var features = settings.features || {};
|
|
37
|
-
if (!mockUpdated(features))
|
|
38
|
-
return false;
|
|
39
|
-
var splitObjects = {};
|
|
40
|
-
forOwn(features, function (data, splitName) {
|
|
41
|
-
var treatment = data;
|
|
42
|
-
var config = null;
|
|
43
|
-
if (isObject(data)) {
|
|
44
|
-
treatment = data.treatment;
|
|
45
|
-
config = data.config || config;
|
|
46
|
-
}
|
|
47
|
-
var configurations = {};
|
|
48
|
-
if (config !== null)
|
|
49
|
-
configurations[treatment] = config;
|
|
50
|
-
splitObjects[splitName] = {
|
|
51
|
-
trafficTypeName: 'localhost',
|
|
52
|
-
conditions: [parseCondition({ treatment: treatment })],
|
|
53
|
-
configurations: configurations
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
return splitObjects;
|
|
57
|
-
};
|
|
58
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { fromObjectSyncTaskFactory } from './syncTasks/fromObjectSyncTask';
|
|
2
|
-
import { objectAssign } from '../../utils/lang/objectAssign';
|
|
3
|
-
import { SDK_SEGMENTS_ARRIVED } from '../../readiness/constants';
|
|
4
|
-
function flush() {
|
|
5
|
-
return Promise.resolve();
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Offline SyncManager factory.
|
|
9
|
-
* Can be used for server-side API, and client-side API with or without multiple clients.
|
|
10
|
-
*
|
|
11
|
-
* @param splitsParser - e.g., `splitsParserFromFile`, `splitsParserFromSettings`.
|
|
12
|
-
*/
|
|
13
|
-
export function syncManagerOfflineFactory(splitsParserFactory) {
|
|
14
|
-
/**
|
|
15
|
-
* SyncManager factory for modular SDK
|
|
16
|
-
*/
|
|
17
|
-
return function (_a) {
|
|
18
|
-
var settings = _a.settings, readiness = _a.readiness, storage = _a.storage;
|
|
19
|
-
var mainSyncManager = fromObjectSyncTaskFactory(splitsParserFactory(), storage, readiness, settings);
|
|
20
|
-
var mainStart = mainSyncManager.start;
|
|
21
|
-
var sharedStarts = [];
|
|
22
|
-
return objectAssign(mainSyncManager, {
|
|
23
|
-
start: function () {
|
|
24
|
-
mainStart();
|
|
25
|
-
sharedStarts.forEach(function (cb) { return cb(); });
|
|
26
|
-
sharedStarts.length = 0;
|
|
27
|
-
},
|
|
28
|
-
// fake flush, that resolves immediately
|
|
29
|
-
flush: flush,
|
|
30
|
-
// [Only used for client-side]
|
|
31
|
-
shared: function (matchingKey, readinessManager) {
|
|
32
|
-
// In LOCALHOST mode, shared clients are ready in the next event-loop cycle than created
|
|
33
|
-
// SDK_READY cannot be emitted directly because this will not update the readiness status
|
|
34
|
-
function emitSdkReady() {
|
|
35
|
-
readinessManager.segments.emit(SDK_SEGMENTS_ARRIVED); // SDK_SPLITS_ARRIVED emitted by main SyncManager
|
|
36
|
-
}
|
|
37
|
-
if (mainSyncManager.isRunning())
|
|
38
|
-
setTimeout(emitSdkReady);
|
|
39
|
-
else
|
|
40
|
-
sharedStarts.push(emitSdkReady);
|
|
41
|
-
return {
|
|
42
|
-
stop: function () { },
|
|
43
|
-
flush: flush,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { forOwn } from '../../../utils/lang';
|
|
2
|
-
import { syncTaskFactory } from '../../syncTask';
|
|
3
|
-
import { CONTROL } from '../../../utils/constants';
|
|
4
|
-
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../../../readiness/constants';
|
|
5
|
-
import { SYNC_OFFLINE_DATA, ERROR_SYNC_OFFLINE_LOADING } from '../../../logger/constants';
|
|
6
|
-
/**
|
|
7
|
-
* Offline equivalent of `splitChangesUpdaterFactory`
|
|
8
|
-
*/
|
|
9
|
-
export function fromObjectUpdaterFactory(splitsParser, storage, readiness, settings) {
|
|
10
|
-
var log = settings.log, splitsCache = storage.splits;
|
|
11
|
-
var startingUp = true;
|
|
12
|
-
return function objectUpdater() {
|
|
13
|
-
var splits = [];
|
|
14
|
-
var loadError = null;
|
|
15
|
-
var splitsMock = {};
|
|
16
|
-
try {
|
|
17
|
-
splitsMock = splitsParser(settings);
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
loadError = err;
|
|
21
|
-
log.error(ERROR_SYNC_OFFLINE_LOADING, [err]);
|
|
22
|
-
}
|
|
23
|
-
if (!loadError && splitsMock) {
|
|
24
|
-
log.debug(SYNC_OFFLINE_DATA, [JSON.stringify(splitsMock)]);
|
|
25
|
-
forOwn(splitsMock, function (val, name) {
|
|
26
|
-
// @ts-ignore Split changeNumber and seed is undefined in localhost mode
|
|
27
|
-
splits.push({
|
|
28
|
-
name: name,
|
|
29
|
-
status: 'ACTIVE',
|
|
30
|
-
killed: false,
|
|
31
|
-
trafficAllocation: 100,
|
|
32
|
-
defaultTreatment: CONTROL,
|
|
33
|
-
conditions: val.conditions || [],
|
|
34
|
-
configurations: val.configurations,
|
|
35
|
-
trafficTypeName: val.trafficTypeName
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
return Promise.all([
|
|
39
|
-
splitsCache.clear(),
|
|
40
|
-
splitsCache.update(splits, [], Date.now())
|
|
41
|
-
]).then(function () {
|
|
42
|
-
readiness.splits.emit(SDK_SPLITS_ARRIVED);
|
|
43
|
-
if (startingUp) {
|
|
44
|
-
startingUp = false;
|
|
45
|
-
var isCacheLoaded_1 = storage.validateCache ? storage.validateCache() : false;
|
|
46
|
-
Promise.resolve().then(function () {
|
|
47
|
-
// Emits SDK_READY_FROM_CACHE
|
|
48
|
-
if (isCacheLoaded_1)
|
|
49
|
-
readiness.splits.emit(SDK_SPLITS_CACHE_LOADED);
|
|
50
|
-
// Emits SDK_READY
|
|
51
|
-
readiness.segments.emit(SDK_SEGMENTS_ARRIVED);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return true;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
return Promise.resolve(true);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* PollingManager in Offline mode
|
|
64
|
-
*/
|
|
65
|
-
export function fromObjectSyncTaskFactory(splitsParser, storage, readiness, settings) {
|
|
66
|
-
return syncTaskFactory(settings.log, fromObjectUpdaterFactory(splitsParser, storage, readiness, settings), settings.scheduler.offlineRefreshRate, 'offlineUpdater');
|
|
67
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factory of MySegments fetcher.
|
|
3
|
-
* MySegments fetcher is a wrapper around `mySegments` API service that parses the response and handle errors.
|
|
4
|
-
*/
|
|
5
|
-
export function mySegmentsFetcherFactory(fetchMemberships) {
|
|
6
|
-
return function mySegmentsFetcher(userMatchingKey, noCache, till,
|
|
7
|
-
// Optional decorator for `fetchMemberships` promise, such as timeout or time tracker
|
|
8
|
-
decorator) {
|
|
9
|
-
var mySegmentsPromise = fetchMemberships(userMatchingKey, noCache, till);
|
|
10
|
-
if (decorator)
|
|
11
|
-
mySegmentsPromise = decorator(mySegmentsPromise);
|
|
12
|
-
return mySegmentsPromise.then(function (resp) { return resp.json(); });
|
|
13
|
-
};
|
|
14
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { __spreadArray } from "tslib";
|
|
2
|
-
function greedyFetch(fetchSegmentChanges, since, segmentName, noCache, targetTill) {
|
|
3
|
-
return fetchSegmentChanges(since, segmentName, noCache, targetTill)
|
|
4
|
-
.then(function (resp) { return resp.json(); })
|
|
5
|
-
.then(function (json) {
|
|
6
|
-
var since = json.since, till = json.till;
|
|
7
|
-
if (since === till) {
|
|
8
|
-
return [json];
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
return Promise.all([json, greedyFetch(fetchSegmentChanges, till, segmentName, noCache, targetTill)]).then(function (flatMe) {
|
|
12
|
-
return __spreadArray([flatMe[0]], flatMe[1], true);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Factory of SegmentChanges fetcher.
|
|
19
|
-
* SegmentChanges fetcher is a wrapper around `segmentChanges` API service that parses the response and handle errors and retries.
|
|
20
|
-
*/
|
|
21
|
-
export function segmentChangesFetcherFactory(fetchSegmentChanges) {
|
|
22
|
-
return function segmentChangesFetcher(since, segmentName, noCache, till,
|
|
23
|
-
// Optional decorator for `fetchSegmentChanges` promise, such as timeout or time tracker
|
|
24
|
-
decorator) {
|
|
25
|
-
var segmentsPromise = greedyFetch(fetchSegmentChanges, since, segmentName, noCache, till);
|
|
26
|
-
if (decorator)
|
|
27
|
-
segmentsPromise = decorator(segmentsPromise);
|
|
28
|
-
return segmentsPromise;
|
|
29
|
-
};
|
|
30
|
-
}
|