@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,62 +0,0 @@
|
|
|
1
|
-
import { clientCSDecorator } from './clientCS';
|
|
2
|
-
import { validateKey } from '../utils/inputValidation/key';
|
|
3
|
-
import { getMatching, keyParser } from '../utils/key';
|
|
4
|
-
import { sdkClientFactory } from './sdkClient';
|
|
5
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
6
|
-
import { RETRIEVE_CLIENT_DEFAULT, NEW_SHARED_CLIENT, RETRIEVE_CLIENT_EXISTING, LOG_PREFIX_CLIENT_INSTANTIATION } from '../logger/constants';
|
|
7
|
-
import { SDK_SEGMENTS_ARRIVED } from '../readiness/constants';
|
|
8
|
-
import { buildInstanceId } from './identity';
|
|
9
|
-
/**
|
|
10
|
-
* Factory of client method for the client-side API variant where TT is ignored.
|
|
11
|
-
* Therefore, clients don't have a bound TT for the track method.
|
|
12
|
-
*/
|
|
13
|
-
export function sdkClientMethodCSFactory(params) {
|
|
14
|
-
var clients = params.clients, storage = params.storage, syncManager = params.syncManager, sdkReadinessManager = params.sdkReadinessManager, _a = params.settings, key = _a.core.key, log = _a.log;
|
|
15
|
-
var mainClientInstance = clientCSDecorator(log, sdkClientFactory(params), key);
|
|
16
|
-
var parsedDefaultKey = keyParser(key);
|
|
17
|
-
var defaultInstanceId = buildInstanceId(parsedDefaultKey);
|
|
18
|
-
// Cache instances created per factory.
|
|
19
|
-
clients[defaultInstanceId] = mainClientInstance;
|
|
20
|
-
return function client(key) {
|
|
21
|
-
if (key === undefined) {
|
|
22
|
-
log.debug(RETRIEVE_CLIENT_DEFAULT);
|
|
23
|
-
return mainClientInstance;
|
|
24
|
-
}
|
|
25
|
-
// Validate the key value
|
|
26
|
-
var validKey = validateKey(log, key, LOG_PREFIX_CLIENT_INSTANTIATION);
|
|
27
|
-
if (validKey === false) {
|
|
28
|
-
throw new Error('Shared Client needs a valid key.');
|
|
29
|
-
}
|
|
30
|
-
var instanceId = buildInstanceId(validKey);
|
|
31
|
-
if (!clients[instanceId]) {
|
|
32
|
-
var matchingKey = getMatching(validKey);
|
|
33
|
-
var sharedSdkReadiness_1 = sdkReadinessManager.shared();
|
|
34
|
-
var sharedStorage = storage.shared && storage.shared(matchingKey, function (err) {
|
|
35
|
-
if (err) {
|
|
36
|
-
sharedSdkReadiness_1.readinessManager.timeout();
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
// Emit SDK_READY in consumer mode for shared clients
|
|
40
|
-
sharedSdkReadiness_1.readinessManager.segments.emit(SDK_SEGMENTS_ARRIVED);
|
|
41
|
-
});
|
|
42
|
-
// 3 possibilities:
|
|
43
|
-
// - Standalone mode: both syncManager and sharedSyncManager are defined
|
|
44
|
-
// - Consumer mode: both syncManager and sharedSyncManager are undefined
|
|
45
|
-
// - Consumer partial mode: syncManager is defined (only for submitters) but sharedSyncManager is undefined
|
|
46
|
-
// @ts-ignore
|
|
47
|
-
var sharedSyncManager = syncManager && sharedStorage && syncManager.shared(matchingKey, sharedSdkReadiness_1.readinessManager, sharedStorage);
|
|
48
|
-
// As shared clients reuse all the storage information, we don't need to check here if we
|
|
49
|
-
// will use offline or online mode. We should stick with the original decision.
|
|
50
|
-
clients[instanceId] = clientCSDecorator(log, sdkClientFactory(objectAssign({}, params, {
|
|
51
|
-
sdkReadinessManager: sharedSdkReadiness_1,
|
|
52
|
-
storage: sharedStorage || storage,
|
|
53
|
-
syncManager: sharedSyncManager,
|
|
54
|
-
}), true), validKey);
|
|
55
|
-
log.info(NEW_SHARED_CLIENT);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
log.debug(RETRIEVE_CLIENT_EXISTING);
|
|
59
|
-
}
|
|
60
|
-
return clients[instanceId];
|
|
61
|
-
};
|
|
62
|
-
}
|
package/esm/sdkFactory/index.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { sdkReadinessManagerFactory } from '../readiness/sdkReadinessManager';
|
|
2
|
-
import { impressionsTrackerFactory } from '../trackers/impressionsTracker';
|
|
3
|
-
import { eventTrackerFactory } from '../trackers/eventTracker';
|
|
4
|
-
import { telemetryTrackerFactory } from '../trackers/telemetryTracker';
|
|
5
|
-
import { validateAndTrackApiKey } from '../utils/inputValidation/apiKey';
|
|
6
|
-
import { createLoggerAPI } from '../logger/sdkLogger';
|
|
7
|
-
import { NEW_FACTORY, RETRIEVE_MANAGER } from '../logger/constants';
|
|
8
|
-
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../readiness/constants';
|
|
9
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
10
|
-
import { strategyDebugFactory } from '../trackers/strategy/strategyDebug';
|
|
11
|
-
import { strategyOptimizedFactory } from '../trackers/strategy/strategyOptimized';
|
|
12
|
-
import { strategyNoneFactory } from '../trackers/strategy/strategyNone';
|
|
13
|
-
import { uniqueKeysTrackerFactory } from '../trackers/uniqueKeysTracker';
|
|
14
|
-
import { DEBUG, OPTIMIZED } from '../utils/constants';
|
|
15
|
-
/**
|
|
16
|
-
* Modular SDK factory
|
|
17
|
-
*/
|
|
18
|
-
export function sdkFactory(params) {
|
|
19
|
-
var settings = params.settings, platform = params.platform, storageFactory = params.storageFactory, splitApiFactory = params.splitApiFactory, extraProps = params.extraProps, syncManagerFactory = params.syncManagerFactory, SignalListener = params.SignalListener, impressionsObserverFactory = params.impressionsObserverFactory, integrationsManagerFactory = params.integrationsManagerFactory, sdkManagerFactory = params.sdkManagerFactory, sdkClientMethodFactory = params.sdkClientMethodFactory, filterAdapterFactory = params.filterAdapterFactory, lazyInit = params.lazyInit;
|
|
20
|
-
var log = settings.log, impressionsMode = settings.sync.impressionsMode;
|
|
21
|
-
// @TODO handle non-recoverable errors, such as, global `fetch` not available, invalid SDK Key, etc.
|
|
22
|
-
// On non-recoverable errors, we should mark the SDK as destroyed and not start synchronization.
|
|
23
|
-
// initialization
|
|
24
|
-
var hasInit = false;
|
|
25
|
-
var initCallbacks = [];
|
|
26
|
-
function whenInit(cb) {
|
|
27
|
-
if (hasInit)
|
|
28
|
-
cb();
|
|
29
|
-
else
|
|
30
|
-
initCallbacks.push(cb);
|
|
31
|
-
}
|
|
32
|
-
var sdkReadinessManager = sdkReadinessManagerFactory(platform.EventEmitter, settings);
|
|
33
|
-
var readiness = sdkReadinessManager.readinessManager;
|
|
34
|
-
var storage = storageFactory({
|
|
35
|
-
settings: settings,
|
|
36
|
-
onReadyCb: function (error) {
|
|
37
|
-
if (error) {
|
|
38
|
-
// If storage fails to connect, SDK_READY_TIMED_OUT event is emitted immediately. Review when timeout and non-recoverable errors are reworked
|
|
39
|
-
readiness.timeout();
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
readiness.splits.emit(SDK_SPLITS_ARRIVED);
|
|
43
|
-
readiness.segments.emit(SDK_SEGMENTS_ARRIVED);
|
|
44
|
-
},
|
|
45
|
-
onReadyFromCacheCb: function () {
|
|
46
|
-
readiness.splits.emit(SDK_SPLITS_CACHE_LOADED);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
// @TODO add support for dataloader: `if (params.dataLoader) params.dataLoader(storage);`
|
|
50
|
-
var clients = {};
|
|
51
|
-
var telemetryTracker = telemetryTrackerFactory(storage.telemetry, platform.now);
|
|
52
|
-
var integrationsManager = integrationsManagerFactory && integrationsManagerFactory({ settings: settings, storage: storage, telemetryTracker: telemetryTracker });
|
|
53
|
-
var observer = impressionsObserverFactory();
|
|
54
|
-
var uniqueKeysTracker = uniqueKeysTrackerFactory(log, storage.uniqueKeys, filterAdapterFactory && filterAdapterFactory());
|
|
55
|
-
var noneStrategy = strategyNoneFactory(storage.impressionCounts, uniqueKeysTracker);
|
|
56
|
-
var strategy = impressionsMode === OPTIMIZED ?
|
|
57
|
-
strategyOptimizedFactory(observer, storage.impressionCounts) :
|
|
58
|
-
impressionsMode === DEBUG ?
|
|
59
|
-
strategyDebugFactory(observer) :
|
|
60
|
-
noneStrategy;
|
|
61
|
-
var impressionsTracker = impressionsTrackerFactory(settings, storage.impressions, noneStrategy, strategy, whenInit, integrationsManager, storage.telemetry);
|
|
62
|
-
var eventTracker = eventTrackerFactory(settings, storage.events, whenInit, integrationsManager, storage.telemetry);
|
|
63
|
-
// splitApi is used by SyncManager and Browser signal listener
|
|
64
|
-
var splitApi = splitApiFactory && splitApiFactory(settings, platform, telemetryTracker);
|
|
65
|
-
var ctx = { clients: clients, splitApi: splitApi, eventTracker: eventTracker, impressionsTracker: impressionsTracker, telemetryTracker: telemetryTracker, uniqueKeysTracker: uniqueKeysTracker, sdkReadinessManager: sdkReadinessManager, readiness: readiness, settings: settings, storage: storage, platform: platform };
|
|
66
|
-
var syncManager = syncManagerFactory && syncManagerFactory(ctx);
|
|
67
|
-
ctx.syncManager = syncManager;
|
|
68
|
-
var signalListener = SignalListener && new SignalListener(syncManager, settings, storage, splitApi);
|
|
69
|
-
ctx.signalListener = signalListener;
|
|
70
|
-
// SDK client and manager
|
|
71
|
-
var clientMethod = sdkClientMethodFactory(ctx);
|
|
72
|
-
var managerInstance = sdkManagerFactory(settings, storage.splits, sdkReadinessManager);
|
|
73
|
-
function init() {
|
|
74
|
-
if (hasInit)
|
|
75
|
-
return;
|
|
76
|
-
hasInit = true;
|
|
77
|
-
// We will just log and allow for the SDK to end up throwing an SDK_TIMEOUT event for devs to handle.
|
|
78
|
-
validateAndTrackApiKey(log, settings.core.authorizationKey);
|
|
79
|
-
readiness.init();
|
|
80
|
-
uniqueKeysTracker.start();
|
|
81
|
-
syncManager && syncManager.start();
|
|
82
|
-
signalListener && signalListener.start();
|
|
83
|
-
initCallbacks.forEach(function (cb) { return cb(); });
|
|
84
|
-
initCallbacks.length = 0;
|
|
85
|
-
}
|
|
86
|
-
log.info(NEW_FACTORY);
|
|
87
|
-
// @ts-ignore
|
|
88
|
-
return objectAssign({
|
|
89
|
-
// Split evaluation and event tracking engine
|
|
90
|
-
client: clientMethod,
|
|
91
|
-
// Manager API to explore available information
|
|
92
|
-
manager: function () {
|
|
93
|
-
log.debug(RETRIEVE_MANAGER);
|
|
94
|
-
return managerInstance;
|
|
95
|
-
},
|
|
96
|
-
// Logger wrapper API
|
|
97
|
-
Logger: createLoggerAPI(log),
|
|
98
|
-
settings: settings,
|
|
99
|
-
destroy: function () {
|
|
100
|
-
hasInit = false;
|
|
101
|
-
return Promise.all(Object.keys(clients).map(function (key) { return clients[key].destroy(); })).then(function () { });
|
|
102
|
-
}
|
|
103
|
-
}, extraProps && extraProps(ctx), lazyInit ? { init: init } : init());
|
|
104
|
-
}
|
package/esm/sdkFactory/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/esm/sdkManager/index.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
import { thenable } from '../utils/promise/thenable';
|
|
3
|
-
import { find } from '../utils/lang';
|
|
4
|
-
import { validateSplit, validateSplitExistence, validateIfNotDestroyed, validateIfOperational } from '../utils/inputValidation';
|
|
5
|
-
import { isConsumerMode } from '../utils/settingsValidation/mode';
|
|
6
|
-
import { SPLIT_FN_LABEL, SPLITS_FN_LABEL, NAMES_FN_LABEL } from '../utils/constants';
|
|
7
|
-
function collectTreatments(splitObject) {
|
|
8
|
-
var conditions = splitObject.conditions;
|
|
9
|
-
// Rollout conditions are supposed to have the entire partitions list, so we find the first one.
|
|
10
|
-
var allTreatmentsCondition = find(conditions, function (cond) { return cond.conditionType === 'ROLLOUT'; });
|
|
11
|
-
// Localstorage mode could fall into a no rollout conditions state. Take the first condition in that case.
|
|
12
|
-
if (!allTreatmentsCondition)
|
|
13
|
-
allTreatmentsCondition = conditions[0];
|
|
14
|
-
// Then extract the treatments from the partitions
|
|
15
|
-
return allTreatmentsCondition ? allTreatmentsCondition.partitions.map(function (v) { return v.treatment; }) : [];
|
|
16
|
-
}
|
|
17
|
-
function objectToView(splitObject) {
|
|
18
|
-
if (!splitObject)
|
|
19
|
-
return null;
|
|
20
|
-
return {
|
|
21
|
-
name: splitObject.name,
|
|
22
|
-
trafficType: splitObject.trafficTypeName,
|
|
23
|
-
killed: splitObject.killed,
|
|
24
|
-
changeNumber: splitObject.changeNumber || 0,
|
|
25
|
-
treatments: collectTreatments(splitObject),
|
|
26
|
-
configs: splitObject.configurations || {},
|
|
27
|
-
sets: splitObject.sets || [],
|
|
28
|
-
defaultTreatment: splitObject.defaultTreatment,
|
|
29
|
-
impressionsDisabled: splitObject.impressionsDisabled === true,
|
|
30
|
-
prerequisites: (splitObject.prerequisites || []).map(function (p) { return ({ flagName: p.n, treatments: p.ts }); }),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function objectsToViews(splitObjects) {
|
|
34
|
-
var views = [];
|
|
35
|
-
splitObjects.forEach(function (split) {
|
|
36
|
-
var view = objectToView(split);
|
|
37
|
-
if (view)
|
|
38
|
-
views.push(view);
|
|
39
|
-
});
|
|
40
|
-
return views;
|
|
41
|
-
}
|
|
42
|
-
export function sdkManagerFactory(settings, splits, _a) {
|
|
43
|
-
var readinessManager = _a.readinessManager, sdkStatus = _a.sdkStatus;
|
|
44
|
-
var log = settings.log, mode = settings.mode;
|
|
45
|
-
var isAsync = isConsumerMode(mode);
|
|
46
|
-
return objectAssign(
|
|
47
|
-
// Proto-linkage of the readiness Event Emitter
|
|
48
|
-
Object.create(sdkStatus), {
|
|
49
|
-
/**
|
|
50
|
-
* Get the feature flag object corresponding to the given feature flag name if valid
|
|
51
|
-
*/
|
|
52
|
-
split: function (featureFlagName) {
|
|
53
|
-
var splitName = validateSplit(log, featureFlagName, SPLIT_FN_LABEL);
|
|
54
|
-
if (!validateIfNotDestroyed(log, readinessManager, SPLIT_FN_LABEL) || !validateIfOperational(log, readinessManager, SPLIT_FN_LABEL) || !splitName) {
|
|
55
|
-
return isAsync ? Promise.resolve(null) : null;
|
|
56
|
-
}
|
|
57
|
-
var split = splits.getSplit(splitName);
|
|
58
|
-
if (thenable(split)) {
|
|
59
|
-
return split.catch(function () { return null; }).then(function (result) {
|
|
60
|
-
validateSplitExistence(log, readinessManager, splitName, result, SPLIT_FN_LABEL);
|
|
61
|
-
return objectToView(result);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
validateSplitExistence(log, readinessManager, splitName, split, SPLIT_FN_LABEL);
|
|
65
|
-
return objectToView(split);
|
|
66
|
-
},
|
|
67
|
-
/**
|
|
68
|
-
* Get the feature flag objects present on the factory storage
|
|
69
|
-
*/
|
|
70
|
-
splits: function () {
|
|
71
|
-
if (!validateIfNotDestroyed(log, readinessManager, SPLITS_FN_LABEL) || !validateIfOperational(log, readinessManager, SPLITS_FN_LABEL)) {
|
|
72
|
-
return isAsync ? Promise.resolve([]) : [];
|
|
73
|
-
}
|
|
74
|
-
var currentSplits = splits.getAll();
|
|
75
|
-
return thenable(currentSplits) ?
|
|
76
|
-
currentSplits.catch(function () { return []; }).then(objectsToViews) : // handle possible rejections when using pluggable storage
|
|
77
|
-
objectsToViews(currentSplits);
|
|
78
|
-
},
|
|
79
|
-
/**
|
|
80
|
-
* Get the feature flag names present on the factory storage
|
|
81
|
-
*/
|
|
82
|
-
names: function () {
|
|
83
|
-
if (!validateIfNotDestroyed(log, readinessManager, NAMES_FN_LABEL) || !validateIfOperational(log, readinessManager, NAMES_FN_LABEL)) {
|
|
84
|
-
return isAsync ? Promise.resolve([]) : [];
|
|
85
|
-
}
|
|
86
|
-
var splitNames = splits.getSplitNames();
|
|
87
|
-
return thenable(splitNames) ?
|
|
88
|
-
splitNames.catch(function () { return []; }) : // handle possible rejections when using pluggable storage
|
|
89
|
-
splitNames;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
var FORBIDDEN_HEADERS = new Set([
|
|
3
|
-
'splitsdkclientkey',
|
|
4
|
-
'splitsdkversion',
|
|
5
|
-
'splitsdkmachineip',
|
|
6
|
-
'splitsdkmachinename',
|
|
7
|
-
'splitsdkimpressionsmode',
|
|
8
|
-
'host',
|
|
9
|
-
'referrer',
|
|
10
|
-
'content-type',
|
|
11
|
-
'content-length',
|
|
12
|
-
'content-encoding',
|
|
13
|
-
'accept',
|
|
14
|
-
'keep-alive',
|
|
15
|
-
'x-fastly-debug'
|
|
16
|
-
]);
|
|
17
|
-
export function decorateHeaders(settings, headers) {
|
|
18
|
-
var _a;
|
|
19
|
-
if ((_a = settings.sync.requestOptions) === null || _a === void 0 ? void 0 : _a.getHeaderOverrides) {
|
|
20
|
-
try {
|
|
21
|
-
var headerOverrides_1 = settings.sync.requestOptions.getHeaderOverrides({ headers: objectAssign({}, headers) });
|
|
22
|
-
Object.keys(headerOverrides_1)
|
|
23
|
-
.filter(function (key) { return !FORBIDDEN_HEADERS.has(key.toLowerCase()); })
|
|
24
|
-
.forEach(function (key) { return headers[key] = headerOverrides_1[key]; });
|
|
25
|
-
}
|
|
26
|
-
catch (e) {
|
|
27
|
-
settings.log.error('Problem adding custom headers to request decorator: ' + e);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return headers;
|
|
31
|
-
}
|
|
32
|
-
export function removeNonISO88591(input) {
|
|
33
|
-
// eslint-disable-next-line no-control-regex
|
|
34
|
-
return input.replace(/[^\x00-\xFF]/g, '');
|
|
35
|
-
}
|
package/esm/services/splitApi.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { splitHttpClientFactory } from './splitHttpClient';
|
|
2
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
3
|
-
import { SPLITS, IMPRESSIONS, IMPRESSIONS_COUNT, EVENTS, TELEMETRY, TOKEN, SEGMENT, MEMBERSHIPS } from '../utils/constants';
|
|
4
|
-
import { ERROR_TOO_MANY_SETS } from '../logger/constants';
|
|
5
|
-
var noCacheHeaderOptions = { headers: { 'Cache-Control': 'no-cache' } };
|
|
6
|
-
function userKeyToQueryParam(userKey) {
|
|
7
|
-
return 'users=' + encodeURIComponent(userKey); // no need to check availability of `encodeURIComponent`, since it is a global highly supported.
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Factory of SplitApi objects, which group the collection of Split HTTP endpoints used by the SDK
|
|
11
|
-
*
|
|
12
|
-
* @param settings - validated settings object
|
|
13
|
-
* @param platform - object containing environment-specific dependencies
|
|
14
|
-
* @param telemetryTracker - telemetry tracker
|
|
15
|
-
*/
|
|
16
|
-
export function splitApiFactory(settings, platform, telemetryTracker) {
|
|
17
|
-
var urls = settings.urls;
|
|
18
|
-
var filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
|
|
19
|
-
var SplitSDKImpressionsMode = settings.sync.impressionsMode;
|
|
20
|
-
var splitHttpClient = splitHttpClientFactory(settings, platform);
|
|
21
|
-
return {
|
|
22
|
-
// @TODO throw errors if health check requests fail, to log them in the Synchronizer
|
|
23
|
-
getSdkAPIHealthCheck: function () {
|
|
24
|
-
var url = urls.sdk + "/version";
|
|
25
|
-
return splitHttpClient(url).then(function () { return true; }).catch(function () { return false; });
|
|
26
|
-
},
|
|
27
|
-
getEventsAPIHealthCheck: function () {
|
|
28
|
-
var url = urls.events + "/version";
|
|
29
|
-
return splitHttpClient(url).then(function () { return true; }).catch(function () { return false; });
|
|
30
|
-
},
|
|
31
|
-
fetchAuth: function (userMatchingKeys) {
|
|
32
|
-
var url = urls.auth + "/v2/auth?s=" + settings.sync.flagSpecVersion;
|
|
33
|
-
if (userMatchingKeys) { // `userMatchingKeys` is undefined in server-side
|
|
34
|
-
var queryParams = userMatchingKeys.map(userKeyToQueryParam).join('&');
|
|
35
|
-
if (queryParams)
|
|
36
|
-
url += '&' + queryParams;
|
|
37
|
-
}
|
|
38
|
-
return splitHttpClient(url, undefined, telemetryTracker.trackHttp(TOKEN));
|
|
39
|
-
},
|
|
40
|
-
fetchSplitChanges: function (since, noCache, till, rbSince) {
|
|
41
|
-
var url = urls.sdk + "/splitChanges?s=" + settings.sync.flagSpecVersion + "&since=" + since + (rbSince ? '&rbSince=' + rbSince : '') + (filterQueryString || '') + (till ? '&till=' + till : '');
|
|
42
|
-
return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(SPLITS))
|
|
43
|
-
.catch(function (err) {
|
|
44
|
-
if (err.statusCode === 414)
|
|
45
|
-
settings.log.error(ERROR_TOO_MANY_SETS);
|
|
46
|
-
throw err;
|
|
47
|
-
});
|
|
48
|
-
},
|
|
49
|
-
fetchSegmentChanges: function (since, segmentName, noCache, till) {
|
|
50
|
-
var url = urls.sdk + "/segmentChanges/" + segmentName + "?since=" + since + (till ? '&till=' + till : '');
|
|
51
|
-
return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(SEGMENT));
|
|
52
|
-
},
|
|
53
|
-
fetchMemberships: function (userMatchingKey, noCache, till) {
|
|
54
|
-
/**
|
|
55
|
-
* URI encoding of user keys in order to:
|
|
56
|
-
* - avoid 400 responses (due to URI malformed). E.g.: '/api/memberships/%'
|
|
57
|
-
* - avoid 404 responses. E.g.: '/api/memberships/foo/bar'
|
|
58
|
-
* - match user keys with special characters. E.g.: 'foo%bar', 'foo/bar'
|
|
59
|
-
*/
|
|
60
|
-
var url = urls.sdk + "/memberships/" + encodeURIComponent(userMatchingKey) + (till ? '?till=' + till : '');
|
|
61
|
-
return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(MEMBERSHIPS));
|
|
62
|
-
},
|
|
63
|
-
/**
|
|
64
|
-
* Post events.
|
|
65
|
-
*
|
|
66
|
-
* @param body - Events bulk payload
|
|
67
|
-
* @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
68
|
-
*/
|
|
69
|
-
postEventsBulk: function (body, headers) {
|
|
70
|
-
var url = urls.events + "/events/bulk";
|
|
71
|
-
return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(EVENTS));
|
|
72
|
-
},
|
|
73
|
-
/**
|
|
74
|
-
* Post impressions.
|
|
75
|
-
*
|
|
76
|
-
* @param body - Impressions bulk payload
|
|
77
|
-
* @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
78
|
-
*/
|
|
79
|
-
postTestImpressionsBulk: function (body, headers) {
|
|
80
|
-
var url = urls.events + "/testImpressions/bulk";
|
|
81
|
-
return splitHttpClient(url, {
|
|
82
|
-
// Adding extra headers to send impressions in OPTIMIZED or DEBUG modes.
|
|
83
|
-
method: 'POST',
|
|
84
|
-
body: body,
|
|
85
|
-
headers: objectAssign({ SplitSDKImpressionsMode: SplitSDKImpressionsMode }, headers)
|
|
86
|
-
}, telemetryTracker.trackHttp(IMPRESSIONS));
|
|
87
|
-
},
|
|
88
|
-
/**
|
|
89
|
-
* Post impressions counts.
|
|
90
|
-
*
|
|
91
|
-
* @param body - Impressions counts payload
|
|
92
|
-
* @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
93
|
-
*/
|
|
94
|
-
postTestImpressionsCount: function (body, headers) {
|
|
95
|
-
var url = urls.events + "/testImpressions/count";
|
|
96
|
-
return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(IMPRESSIONS_COUNT));
|
|
97
|
-
},
|
|
98
|
-
/**
|
|
99
|
-
* Post unique keys for client side.
|
|
100
|
-
*
|
|
101
|
-
* @param body - unique keys payload
|
|
102
|
-
* @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
103
|
-
*/
|
|
104
|
-
postUniqueKeysBulkCs: function (body, headers) {
|
|
105
|
-
var url = urls.telemetry + "/v1/keys/cs";
|
|
106
|
-
return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(TELEMETRY));
|
|
107
|
-
},
|
|
108
|
-
/**
|
|
109
|
-
* Post unique keys for server side.
|
|
110
|
-
*
|
|
111
|
-
* @param body - unique keys payload
|
|
112
|
-
* @param headers - Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
|
|
113
|
-
*/
|
|
114
|
-
postUniqueKeysBulkSs: function (body, headers) {
|
|
115
|
-
var url = urls.telemetry + "/v1/keys/ss";
|
|
116
|
-
return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(TELEMETRY));
|
|
117
|
-
},
|
|
118
|
-
postMetricsConfig: function (body, headers) {
|
|
119
|
-
var url = urls.telemetry + "/v1/metrics/config";
|
|
120
|
-
return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(TELEMETRY), true);
|
|
121
|
-
},
|
|
122
|
-
postMetricsUsage: function (body, headers) {
|
|
123
|
-
var url = urls.telemetry + "/v1/metrics/usage";
|
|
124
|
-
return splitHttpClient(url, { method: 'POST', body: body, headers: headers }, telemetryTracker.trackHttp(TELEMETRY), true);
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
import { ERROR_HTTP, ERROR_CLIENT_CANNOT_GET_READY } from '../logger/constants';
|
|
3
|
-
import { decorateHeaders, removeNonISO88591 } from './decorateHeaders';
|
|
4
|
-
import { timeout } from '../utils/promise/timeout';
|
|
5
|
-
var PENDING_FETCH_ERROR_TIMEOUT = 100;
|
|
6
|
-
var messageNoFetch = 'Global fetch API is not available.';
|
|
7
|
-
/**
|
|
8
|
-
* Factory of Split HTTP clients, which are HTTP clients with predefined headers for Split endpoints.
|
|
9
|
-
*
|
|
10
|
-
* @param settings - SDK settings, used to access authorizationKey, logger instance and metadata (SDK version, ip and hostname) to set additional headers
|
|
11
|
-
* @param platform - object containing environment-specific dependencies
|
|
12
|
-
*/
|
|
13
|
-
export function splitHttpClientFactory(settings, _a) {
|
|
14
|
-
var getOptions = _a.getOptions, getFetch = _a.getFetch;
|
|
15
|
-
var log = settings.log, authorizationKey = settings.core.authorizationKey, version = settings.version, _b = settings.runtime, ip = _b.ip, hostname = _b.hostname;
|
|
16
|
-
var options = getOptions && getOptions(settings);
|
|
17
|
-
var fetch = getFetch && getFetch(settings);
|
|
18
|
-
// if fetch is not available, log Error
|
|
19
|
-
if (!fetch)
|
|
20
|
-
log.error(ERROR_CLIENT_CANNOT_GET_READY, [messageNoFetch]);
|
|
21
|
-
var commonHeaders = {
|
|
22
|
-
'Accept': 'application/json',
|
|
23
|
-
'Content-Type': 'application/json',
|
|
24
|
-
'Authorization': "Bearer " + authorizationKey,
|
|
25
|
-
'SplitSDKVersion': version
|
|
26
|
-
};
|
|
27
|
-
if (ip)
|
|
28
|
-
commonHeaders['SplitSDKMachineIP'] = ip;
|
|
29
|
-
if (hostname)
|
|
30
|
-
commonHeaders['SplitSDKMachineName'] = removeNonISO88591(hostname);
|
|
31
|
-
return function httpClient(url, reqOpts, latencyTracker, logErrorsAsInfo) {
|
|
32
|
-
if (reqOpts === void 0) { reqOpts = {}; }
|
|
33
|
-
if (latencyTracker === void 0) { latencyTracker = function () { }; }
|
|
34
|
-
if (logErrorsAsInfo === void 0) { logErrorsAsInfo = false; }
|
|
35
|
-
var request = objectAssign({
|
|
36
|
-
headers: decorateHeaders(settings, objectAssign({}, commonHeaders, reqOpts.headers || {})),
|
|
37
|
-
method: reqOpts.method || 'GET',
|
|
38
|
-
body: reqOpts.body
|
|
39
|
-
}, options);
|
|
40
|
-
// using `fetch(url, options)` signature to work with unfetch, a lightweight ponyfill of fetch API.
|
|
41
|
-
return fetch ? fetch(url, request)
|
|
42
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful
|
|
43
|
-
.then(function (response) {
|
|
44
|
-
if (!response.ok) {
|
|
45
|
-
// timeout since `text()` promise might not settle in some fetch implementations and cases (e.g. no content)
|
|
46
|
-
return timeout(PENDING_FETCH_ERROR_TIMEOUT, response.text()).then(function (message) { return Promise.reject({ response: response, message: message }); }, function () { return Promise.reject({ response: response }); });
|
|
47
|
-
}
|
|
48
|
-
latencyTracker();
|
|
49
|
-
return response;
|
|
50
|
-
})
|
|
51
|
-
.catch(function (error) {
|
|
52
|
-
var resp = error && error.response;
|
|
53
|
-
var msg = '';
|
|
54
|
-
if (resp) { // An HTTP error
|
|
55
|
-
switch (resp.status) {
|
|
56
|
-
case 404:
|
|
57
|
-
msg = 'Invalid SDK key or resource not found.';
|
|
58
|
-
break;
|
|
59
|
-
// Don't use resp.statusText since reason phrase is removed in HTTP/2
|
|
60
|
-
default:
|
|
61
|
-
msg = error.message;
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else { // Something else, either an error making the request or a Network error.
|
|
66
|
-
msg = error.message || 'Network Error';
|
|
67
|
-
}
|
|
68
|
-
if (!resp || resp.status !== 403) { // 403's log we'll be handled somewhere else.
|
|
69
|
-
log[logErrorsAsInfo ? 'info' : 'error'](ERROR_HTTP, [resp ? 'status code ' + resp.status : 'no status code', url, msg]);
|
|
70
|
-
}
|
|
71
|
-
var networkError = new Error(msg);
|
|
72
|
-
// passes `undefined` as statusCode if not an HTTP error (resp === undefined)
|
|
73
|
-
networkError.statusCode = resp && resp.status;
|
|
74
|
-
latencyTracker(networkError);
|
|
75
|
-
throw networkError;
|
|
76
|
-
}) : Promise.reject(new Error(messageNoFetch));
|
|
77
|
-
};
|
|
78
|
-
}
|
package/esm/services/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This class provides a skeletal implementation of the ISegmentsCacheSync interface
|
|
3
|
-
* to minimize the effort required to implement this interface.
|
|
4
|
-
*/
|
|
5
|
-
var AbstractMySegmentsCacheSync = /** @class */ (function () {
|
|
6
|
-
function AbstractMySegmentsCacheSync() {
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* clear the cache.
|
|
10
|
-
*/
|
|
11
|
-
AbstractMySegmentsCacheSync.prototype.clear = function () {
|
|
12
|
-
this.resetSegments({});
|
|
13
|
-
};
|
|
14
|
-
// No-op. Not used in client-side.
|
|
15
|
-
AbstractMySegmentsCacheSync.prototype.registerSegments = function () { return false; };
|
|
16
|
-
AbstractMySegmentsCacheSync.prototype.update = function () { return false; };
|
|
17
|
-
/**
|
|
18
|
-
* For server-side synchronizer: the method is not used.
|
|
19
|
-
* For client-side synchronizer: it resets or updates the cache.
|
|
20
|
-
*/
|
|
21
|
-
AbstractMySegmentsCacheSync.prototype.resetSegments = function (segmentsData) {
|
|
22
|
-
var _this = this;
|
|
23
|
-
this.setChangeNumber(segmentsData.cn);
|
|
24
|
-
var _a = segmentsData, added = _a.added, removed = _a.removed;
|
|
25
|
-
if (added && removed) {
|
|
26
|
-
var isDiff_1 = false;
|
|
27
|
-
added.forEach(function (segment) {
|
|
28
|
-
isDiff_1 = _this.addSegment(segment) || isDiff_1;
|
|
29
|
-
});
|
|
30
|
-
removed.forEach(function (segment) {
|
|
31
|
-
isDiff_1 = _this.removeSegment(segment) || isDiff_1;
|
|
32
|
-
});
|
|
33
|
-
return isDiff_1;
|
|
34
|
-
}
|
|
35
|
-
var names = (segmentsData.k || []).map(function (s) { return s.n; }).sort();
|
|
36
|
-
var storedSegmentKeys = this.getRegisteredSegments().sort();
|
|
37
|
-
// Extreme fast => everything is empty
|
|
38
|
-
if (!names.length && !storedSegmentKeys.length)
|
|
39
|
-
return false;
|
|
40
|
-
var index = 0;
|
|
41
|
-
while (index < names.length && index < storedSegmentKeys.length && names[index] === storedSegmentKeys[index])
|
|
42
|
-
index++;
|
|
43
|
-
// Quick path => no changes
|
|
44
|
-
if (index === names.length && index === storedSegmentKeys.length)
|
|
45
|
-
return false;
|
|
46
|
-
// Slowest path => add and/or remove segments
|
|
47
|
-
for (var removeIndex = index; removeIndex < storedSegmentKeys.length; removeIndex++) {
|
|
48
|
-
this.removeSegment(storedSegmentKeys[removeIndex]);
|
|
49
|
-
}
|
|
50
|
-
for (var addIndex = index; addIndex < names.length; addIndex++) {
|
|
51
|
-
this.addSegment(names[addIndex]);
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
54
|
-
};
|
|
55
|
-
return AbstractMySegmentsCacheSync;
|
|
56
|
-
}());
|
|
57
|
-
export { AbstractMySegmentsCacheSync };
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { objectAssign } from '../utils/lang/objectAssign';
|
|
2
|
-
/**
|
|
3
|
-
* This class provides a skeletal implementation of the ISplitsCacheAsync interface
|
|
4
|
-
* to minimize the effort required to implement this interface.
|
|
5
|
-
*/
|
|
6
|
-
var AbstractSplitsCacheAsync = /** @class */ (function () {
|
|
7
|
-
function AbstractSplitsCacheAsync() {
|
|
8
|
-
}
|
|
9
|
-
AbstractSplitsCacheAsync.prototype.update = function (toAdd, toRemove, changeNumber) {
|
|
10
|
-
var _this = this;
|
|
11
|
-
return Promise.all([
|
|
12
|
-
this.setChangeNumber(changeNumber),
|
|
13
|
-
Promise.all(toAdd.map(function (addedFF) { return _this.addSplit(addedFF); })),
|
|
14
|
-
Promise.all(toRemove.map(function (removedFF) { return _this.removeSplit(removedFF.name); }))
|
|
15
|
-
]).then(function (_a) {
|
|
16
|
-
var added = _a[1], removed = _a[2];
|
|
17
|
-
return added.some(function (result) { return result; }) || removed.some(function (result) { return result; });
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
// @TODO revisit segment-related methods ('usesSegments', 'getRegisteredSegments', 'registerSegments')
|
|
21
|
-
// noop, just keeping the interface. This is used by standalone client-side API only, and so only implemented by InMemory and InLocalStorage.
|
|
22
|
-
AbstractSplitsCacheAsync.prototype.usesSegments = function () {
|
|
23
|
-
return Promise.resolve(true);
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Kill `name` split and set `defaultTreatment` and `changeNumber`.
|
|
27
|
-
* Used for SPLIT_KILL push notifications.
|
|
28
|
-
*
|
|
29
|
-
* @returns a promise that is resolved once the split kill operation is performed. The fulfillment value is a boolean: `true` if the operation successed updating the split or `false` if no split is updated,
|
|
30
|
-
* for instance, if the `changeNumber` is old, or if the split is not found (e.g., `/splitchanges` hasn't been fetched yet), or if the storage fails to apply the update.
|
|
31
|
-
* The promise will never be rejected.
|
|
32
|
-
*/
|
|
33
|
-
AbstractSplitsCacheAsync.prototype.killLocally = function (name, defaultTreatment, changeNumber) {
|
|
34
|
-
var _this = this;
|
|
35
|
-
return this.getSplit(name).then(function (split) {
|
|
36
|
-
if (split && (!split.changeNumber || split.changeNumber < changeNumber)) {
|
|
37
|
-
var newSplit = objectAssign({}, split);
|
|
38
|
-
newSplit.killed = true;
|
|
39
|
-
newSplit.defaultTreatment = defaultTreatment;
|
|
40
|
-
newSplit.changeNumber = changeNumber;
|
|
41
|
-
return _this.addSplit(newSplit);
|
|
42
|
-
}
|
|
43
|
-
return false;
|
|
44
|
-
}).catch(function () { return false; });
|
|
45
|
-
};
|
|
46
|
-
return AbstractSplitsCacheAsync;
|
|
47
|
-
}());
|
|
48
|
-
export { AbstractSplitsCacheAsync };
|