@splitsoftware/splitio-commons 2.4.2-rc.3 → 11.5.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.txt +895 -152
- package/CONTRIBUTORS-GUIDE.md +26 -16
- package/README.md +43 -5
- package/cjs/factory/browser.js +73 -0
- package/cjs/factory/node.js +79 -0
- package/cjs/factory/package.json +4 -0
- package/cjs/index.js +3 -16
- package/cjs/{utils/MinEvents.js → platform/EventEmitter.js} +153 -27
- package/cjs/platform/browser.js +15 -0
- package/cjs/platform/filter/bloomFilter.js +32 -0
- package/cjs/platform/getEventSource/browser.js +7 -0
- package/cjs/platform/getEventSource/eventsource.js +480 -0
- package/cjs/platform/getEventSource/node.js +25 -0
- package/cjs/platform/getEventSource/package.json +4 -0
- package/cjs/platform/getFetch/browser.js +9 -0
- package/cjs/platform/getFetch/node.js +26 -0
- package/cjs/platform/getFetch/package.json +4 -0
- package/cjs/platform/getOptions/node.js +25 -0
- package/cjs/platform/node.js +18 -0
- package/cjs/platform/package.json +4 -0
- package/cjs/settings/browser.js +21 -0
- package/cjs/settings/defaults/browser.js +21 -0
- package/cjs/settings/defaults/node.js +23 -0
- package/cjs/{listeners/types.js → settings/defaults/version.js} +2 -0
- package/cjs/settings/integrations/browser.js +9 -0
- package/cjs/settings/node.js +22 -0
- package/cjs/settings/package.json +4 -0
- package/cjs/settings/runtime/node.js +22 -0
- package/cjs/settings/storage/browser.js +35 -0
- package/cjs/settings/storage/node.js +67 -0
- package/cjs/sync/offline/LocalhostFromFile.js +8 -0
- package/cjs/sync/offline/splitsParserFromFile.js +148 -0
- package/cjs/umd.js +5 -0
- package/cjs/utils/ip.js +114 -0
- package/client/package.json +5 -0
- package/esm/factory/browser.js +69 -0
- package/esm/factory/node.js +75 -0
- package/esm/factory/package.json +4 -0
- package/esm/index.js +1 -10
- package/esm/{utils/MinEvents.js → platform/EventEmitter.js} +143 -17
- package/esm/platform/browser.js +12 -0
- package/esm/platform/filter/bloomFilter.js +28 -0
- package/esm/platform/getEventSource/browser.js +3 -0
- package/esm/platform/getEventSource/eventsource.js +480 -0
- package/esm/platform/getEventSource/node.js +19 -0
- package/esm/platform/getEventSource/package.json +4 -0
- package/esm/platform/getFetch/browser.js +4 -0
- package/esm/platform/getFetch/node.js +21 -0
- package/esm/platform/getFetch/package.json +4 -0
- package/esm/platform/getOptions/node.js +20 -0
- package/esm/platform/node.js +14 -0
- package/esm/platform/package.json +4 -0
- package/esm/settings/browser.js +17 -0
- package/esm/settings/defaults/browser.js +18 -0
- package/esm/settings/defaults/node.js +20 -0
- package/esm/settings/defaults/version.js +1 -0
- package/esm/settings/integrations/browser.js +5 -0
- package/esm/settings/node.js +18 -0
- package/esm/settings/package.json +4 -0
- package/esm/settings/runtime/node.js +17 -0
- package/esm/settings/storage/browser.js +31 -0
- package/esm/settings/storage/node.js +63 -0
- package/esm/sync/offline/LocalhostFromFile.js +5 -0
- package/esm/sync/offline/splitsParserFromFile.js +143 -0
- package/esm/umd.js +3 -0
- package/esm/utils/ip.js +109 -0
- package/package.json +99 -58
- package/server/package.json +5 -0
- package/src/factory/browser.js +85 -0
- package/src/factory/node.js +92 -0
- package/src/factory/package.json +4 -0
- package/src/index.js +1 -0
- package/src/{utils/MinEvents.ts → platform/EventEmitter.js} +164 -19
- package/src/platform/browser.js +14 -0
- package/src/platform/filter/bloomFilter.js +33 -0
- package/src/platform/getEventSource/browser.js +3 -0
- package/src/platform/getEventSource/eventsource.js +519 -0
- package/src/platform/getEventSource/node.js +20 -0
- package/src/platform/getEventSource/package.json +4 -0
- package/src/platform/getFetch/browser.js +5 -0
- package/src/platform/getFetch/node.js +24 -0
- package/src/platform/getFetch/package.json +4 -0
- package/src/platform/getOptions/node.js +23 -0
- package/src/platform/node.js +16 -0
- package/src/platform/package.json +4 -0
- package/src/settings/browser.js +20 -0
- package/src/settings/defaults/browser.js +21 -0
- package/src/settings/defaults/node.js +23 -0
- package/src/settings/defaults/version.js +1 -0
- package/src/settings/integrations/browser.js +6 -0
- package/src/settings/node.js +21 -0
- package/src/settings/package.json +4 -0
- package/src/settings/runtime/node.js +21 -0
- package/src/settings/storage/browser.js +47 -0
- package/src/settings/storage/node.js +84 -0
- package/src/sync/offline/LocalhostFromFile.js +6 -0
- package/src/sync/offline/splitsParserFromFile.js +173 -0
- package/src/umd.js +4 -0
- package/src/utils/ip.js +123 -0
- package/types/client/index.d.ts +15 -0
- package/types/index.d.ts +24 -1
- package/types/server/index.d.ts +21 -0
- package/types/splitio.d.ts +2 -2083
- package/cjs/consent/index.js +0 -10
- package/cjs/consent/sdkUserConsent.js +0 -60
- package/cjs/dtos/types.js +0 -2
- package/cjs/evaluator/Engine.js +0 -58
- package/cjs/evaluator/combiners/and.js +0 -25
- package/cjs/evaluator/combiners/ifelseif.js +0 -48
- package/cjs/evaluator/condition/engineUtils.js +0 -29
- package/cjs/evaluator/condition/index.js +0 -41
- package/cjs/evaluator/convertions/index.js +0 -11
- package/cjs/evaluator/index.js +0 -134
- package/cjs/evaluator/matchers/all.js +0 -9
- package/cjs/evaluator/matchers/between.js +0 -10
- package/cjs/evaluator/matchers/boolean.js +0 -10
- package/cjs/evaluator/matchers/cont_all.js +0 -23
- package/cjs/evaluator/matchers/cont_any.js +0 -18
- package/cjs/evaluator/matchers/cont_str.js +0 -11
- package/cjs/evaluator/matchers/dependency.js +0 -28
- package/cjs/evaluator/matchers/eq.js +0 -10
- package/cjs/evaluator/matchers/eq_set.js +0 -20
- package/cjs/evaluator/matchers/ew.js +0 -11
- package/cjs/evaluator/matchers/gte.js +0 -10
- package/cjs/evaluator/matchers/index.js +0 -66
- package/cjs/evaluator/matchers/large_segment.js +0 -10
- package/cjs/evaluator/matchers/lte.js +0 -10
- package/cjs/evaluator/matchers/matcherTypes.js +0 -46
- package/cjs/evaluator/matchers/part_of.js +0 -20
- package/cjs/evaluator/matchers/prerequisites.js +0 -22
- package/cjs/evaluator/matchers/rbsegment.js +0 -56
- package/cjs/evaluator/matchers/segment.js +0 -10
- package/cjs/evaluator/matchers/semver_between.js +0 -14
- package/cjs/evaluator/matchers/semver_eq.js +0 -13
- package/cjs/evaluator/matchers/semver_gte.js +0 -13
- package/cjs/evaluator/matchers/semver_inlist.js +0 -16
- package/cjs/evaluator/matchers/semver_lte.js +0 -13
- package/cjs/evaluator/matchers/string.js +0 -11
- package/cjs/evaluator/matchers/sw.js +0 -11
- package/cjs/evaluator/matchers/whitelist.js +0 -11
- package/cjs/evaluator/matchersTransform/index.js +0 -104
- package/cjs/evaluator/matchersTransform/segment.js +0 -12
- package/cjs/evaluator/matchersTransform/unaryNumeric.js +0 -10
- package/cjs/evaluator/matchersTransform/whitelist.js +0 -10
- package/cjs/evaluator/parser/index.js +0 -61
- package/cjs/evaluator/treatments/index.js +0 -42
- package/cjs/evaluator/types.js +0 -2
- package/cjs/evaluator/value/index.js +0 -37
- package/cjs/evaluator/value/sanitize.js +0 -94
- package/cjs/integrations/pluggable.js +0 -35
- package/cjs/integrations/types.js +0 -2
- package/cjs/listeners/browser.js +0 -121
- package/cjs/listeners/node.js +0 -68
- package/cjs/logger/browser/DebugLogger.js +0 -9
- package/cjs/logger/browser/ErrorLogger.js +0 -9
- package/cjs/logger/browser/InfoLogger.js +0 -9
- package/cjs/logger/browser/WarnLogger.js +0 -9
- package/cjs/logger/constants.js +0 -140
- package/cjs/logger/index.js +0 -100
- package/cjs/logger/messages/debug.js +0 -36
- package/cjs/logger/messages/error.js +0 -42
- package/cjs/logger/messages/info.js +0 -37
- package/cjs/logger/messages/warn.js +0 -42
- package/cjs/logger/sdkLogger.js +0 -45
- package/cjs/logger/types.js +0 -2
- package/cjs/readiness/constants.js +0 -13
- package/cjs/readiness/readinessManager.js +0 -154
- package/cjs/readiness/sdkReadinessManager.js +0 -104
- package/cjs/readiness/types.js +0 -2
- package/cjs/sdkClient/client.js +0 -183
- package/cjs/sdkClient/clientAttributesDecoration.js +0 -122
- package/cjs/sdkClient/clientCS.js +0 -30
- package/cjs/sdkClient/clientInputValidation.js +0 -147
- package/cjs/sdkClient/identity.js +0 -7
- package/cjs/sdkClient/sdkClient.js +0 -64
- package/cjs/sdkClient/sdkClientMethod.js +0 -22
- package/cjs/sdkClient/sdkClientMethodCS.js +0 -66
- package/cjs/sdkFactory/index.js +0 -108
- package/cjs/sdkFactory/types.js +0 -2
- package/cjs/sdkManager/index.js +0 -96
- package/cjs/services/decorateHeaders.js +0 -40
- package/cjs/services/splitApi.js +0 -131
- package/cjs/services/splitHttpClient.js +0 -82
- package/cjs/services/types.js +0 -2
- package/cjs/storages/AbstractMySegmentsCacheSync.js +0 -60
- package/cjs/storages/AbstractSplitsCacheAsync.js +0 -51
- package/cjs/storages/AbstractSplitsCacheSync.js +0 -75
- package/cjs/storages/KeyBuilder.js +0 -68
- package/cjs/storages/KeyBuilderCS.js +0 -65
- package/cjs/storages/KeyBuilderSS.js +0 -60
- package/cjs/storages/dataLoader.js +0 -50
- package/cjs/storages/findLatencyIndex.js +0 -18
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -81
- package/cjs/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -117
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +0 -204
- package/cjs/storages/inLocalStorage/constants.js +0 -5
- package/cjs/storages/inLocalStorage/index.js +0 -91
- package/cjs/storages/inLocalStorage/storageAdapter.js +0 -54
- package/cjs/storages/inLocalStorage/validateCache.js +0 -85
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +0 -70
- package/cjs/storages/inMemory/EventsCacheInMemory.js +0 -63
- package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -65
- package/cjs/storages/inMemory/ImpressionsCacheInMemory.js +0 -51
- package/cjs/storages/inMemory/InMemoryStorage.js +0 -46
- package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -63
- package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +0 -46
- package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -61
- package/cjs/storages/inMemory/SegmentsCacheInMemory.js +0 -61
- package/cjs/storages/inMemory/SplitsCacheInMemory.js +0 -121
- package/cjs/storages/inMemory/TelemetryCacheInMemory.js +0 -207
- package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +0 -72
- package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -71
- package/cjs/storages/inRedis/EventsCacheInRedis.js +0 -60
- package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -85
- package/cjs/storages/inRedis/ImpressionsCacheInRedis.js +0 -45
- package/cjs/storages/inRedis/RBSegmentsCacheInRedis.js +0 -64
- package/cjs/storages/inRedis/RedisAdapter.js +0 -195
- package/cjs/storages/inRedis/SegmentsCacheInRedis.js +0 -57
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +0 -243
- package/cjs/storages/inRedis/TelemetryCacheInRedis.js +0 -124
- package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +0 -69
- package/cjs/storages/inRedis/constants.js +0 -7
- package/cjs/storages/inRedis/index.js +0 -73
- package/cjs/storages/pluggable/EventsCachePluggable.js +0 -64
- package/cjs/storages/pluggable/ImpressionCountsCachePluggable.js +0 -81
- package/cjs/storages/pluggable/ImpressionsCachePluggable.js +0 -48
- package/cjs/storages/pluggable/RBSegmentsCachePluggable.js +0 -64
- package/cjs/storages/pluggable/SegmentsCachePluggable.js +0 -80
- package/cjs/storages/pluggable/SplitsCachePluggable.js +0 -212
- package/cjs/storages/pluggable/TelemetryCachePluggable.js +0 -141
- package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +0 -62
- package/cjs/storages/pluggable/constants.js +0 -4
- package/cjs/storages/pluggable/inMemoryWrapper.js +0 -141
- package/cjs/storages/pluggable/index.js +0 -135
- package/cjs/storages/pluggable/wrapperAdapter.js +0 -53
- package/cjs/storages/types.js +0 -2
- package/cjs/storages/utils.js +0 -74
- package/cjs/sync/offline/LocalhostFromObject.js +0 -8
- package/cjs/sync/offline/splitsParser/parseCondition.js +0 -55
- package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +0 -62
- package/cjs/sync/offline/splitsParser/types.js +0 -2
- package/cjs/sync/offline/syncManagerOffline.js +0 -52
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +0 -71
- package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +0 -18
- package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +0 -34
- package/cjs/sync/polling/fetchers/splitChangesFetcher.js +0 -68
- package/cjs/sync/polling/fetchers/types.js +0 -2
- package/cjs/sync/polling/pollingManagerCS.js +0 -100
- package/cjs/sync/polling/pollingManagerSS.js +0 -49
- package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -13
- package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +0 -13
- package/cjs/sync/polling/syncTasks/splitsSyncTask.js +0 -13
- package/cjs/sync/polling/types.js +0 -2
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +0 -83
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +0 -80
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +0 -190
- package/cjs/sync/streaming/AuthClient/index.js +0 -43
- package/cjs/sync/streaming/AuthClient/types.js +0 -2
- package/cjs/sync/streaming/SSEClient/index.js +0 -86
- package/cjs/sync/streaming/SSEClient/types.js +0 -2
- package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +0 -98
- package/cjs/sync/streaming/SSEHandler/NotificationParser.js +0 -41
- package/cjs/sync/streaming/SSEHandler/index.js +0 -97
- package/cjs/sync/streaming/SSEHandler/types.js +0 -16
- package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -124
- package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -92
- package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -136
- package/cjs/sync/streaming/UpdateWorkers/constants.js +0 -6
- package/cjs/sync/streaming/UpdateWorkers/types.js +0 -2
- package/cjs/sync/streaming/constants.js +0 -43
- package/cjs/sync/streaming/parseUtils.js +0 -98
- package/cjs/sync/streaming/pushManager.js +0 -317
- package/cjs/sync/streaming/types.js +0 -2
- package/cjs/sync/submitters/eventsSubmitter.js +0 -28
- package/cjs/sync/submitters/impressionCountsSubmitter.js +0 -36
- package/cjs/sync/submitters/impressionsSubmitter.js +0 -54
- package/cjs/sync/submitters/submitter.js +0 -66
- package/cjs/sync/submitters/submitterManager.js +0 -46
- package/cjs/sync/submitters/telemetrySubmitter.js +0 -125
- package/cjs/sync/submitters/types.js +0 -2
- package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -27
- package/cjs/sync/syncManagerOnline.js +0 -176
- package/cjs/sync/syncTask.js +0 -84
- package/cjs/sync/types.js +0 -2
- package/cjs/trackers/eventTracker.js +0 -62
- package/cjs/trackers/impressionObserver/ImpressionObserver.js +0 -18
- package/cjs/trackers/impressionObserver/buildKey.js +0 -7
- package/cjs/trackers/impressionObserver/impressionObserverCS.js +0 -15
- package/cjs/trackers/impressionObserver/impressionObserverSS.js +0 -15
- package/cjs/trackers/impressionObserver/types.js +0 -2
- package/cjs/trackers/impressionsTracker.js +0 -78
- package/cjs/trackers/strategy/strategyDebug.js +0 -20
- package/cjs/trackers/strategy/strategyNone.js +0 -24
- package/cjs/trackers/strategy/strategyOptimized.js +0 -28
- package/cjs/trackers/telemetryTracker.js +0 -75
- package/cjs/trackers/types.js +0 -2
- package/cjs/trackers/uniqueKeysTracker.js +0 -40
- package/cjs/types.js +0 -2
- package/cjs/utils/Backoff.js +0 -41
- package/cjs/utils/LRUCache/LinkedList.js +0 -114
- package/cjs/utils/LRUCache/index.js +0 -42
- package/cjs/utils/MinEventEmitter.js +0 -100
- package/cjs/utils/Semver.js +0 -103
- package/cjs/utils/base64/index.js +0 -75
- package/cjs/utils/constants/index.js +0 -100
- package/cjs/utils/decompress/index.js +0 -427
- package/cjs/utils/env/isLocalStorageAvailable.js +0 -39
- package/cjs/utils/env/isNode.js +0 -9
- package/cjs/utils/inputValidation/apiKey.js +0 -54
- package/cjs/utils/inputValidation/attribute.js +0 -20
- package/cjs/utils/inputValidation/attributes.js +0 -25
- package/cjs/utils/inputValidation/event.js +0 -28
- package/cjs/utils/inputValidation/eventProperties.js +0 -74
- package/cjs/utils/inputValidation/eventValue.js +0 -12
- package/cjs/utils/inputValidation/index.js +0 -34
- package/cjs/utils/inputValidation/isOperational.js +0 -18
- package/cjs/utils/inputValidation/key.js +0 -51
- package/cjs/utils/inputValidation/preloadedData.js +0 -59
- package/cjs/utils/inputValidation/split.js +0 -30
- package/cjs/utils/inputValidation/splitExistence.js +0 -19
- package/cjs/utils/inputValidation/splits.js +0 -25
- package/cjs/utils/inputValidation/trafficType.js +0 -29
- package/cjs/utils/inputValidation/trafficTypeExistence.js +0 -31
- package/cjs/utils/jwt/index.js +0 -17
- package/cjs/utils/jwt/types.js +0 -2
- package/cjs/utils/key/index.js +0 -36
- package/cjs/utils/labels/index.js +0 -12
- package/cjs/utils/lang/binarySearch.js +0 -42
- package/cjs/utils/lang/getFnName.js +0 -12
- package/cjs/utils/lang/getGlobal.js +0 -18
- package/cjs/utils/lang/index.js +0 -281
- package/cjs/utils/lang/objectAssign.js +0 -20
- package/cjs/utils/lang/sets.js +0 -23
- package/cjs/utils/murmur3/common.js +0 -46
- package/cjs/utils/murmur3/legacy.js +0 -44
- package/cjs/utils/murmur3/murmur3.js +0 -62
- package/cjs/utils/murmur3/murmur3_128.js +0 -219
- package/cjs/utils/murmur3/murmur3_128_x86.js +0 -154
- package/cjs/utils/murmur3/murmur3_64.js +0 -36
- package/cjs/utils/murmur3/utfx.js +0 -108
- package/cjs/utils/promise/thenable.js +0 -8
- package/cjs/utils/promise/timeout.js +0 -20
- package/cjs/utils/promise/wrapper.js +0 -58
- package/cjs/utils/settingsValidation/consent.js +0 -16
- package/cjs/utils/settingsValidation/impressionsMode.js +0 -14
- package/cjs/utils/settingsValidation/index.js +0 -184
- package/cjs/utils/settingsValidation/integrations/common.js +0 -27
- package/cjs/utils/settingsValidation/integrations/configurable.js +0 -18
- package/cjs/utils/settingsValidation/integrations/pluggable.js +0 -15
- package/cjs/utils/settingsValidation/logger/builtinLogger.js +0 -46
- package/cjs/utils/settingsValidation/logger/commons.js +0 -28
- package/cjs/utils/settingsValidation/logger/pluggableLogger.js +0 -32
- package/cjs/utils/settingsValidation/mode.js +0 -20
- package/cjs/utils/settingsValidation/runtime.js +0 -11
- package/cjs/utils/settingsValidation/splitFilters.js +0 -188
- package/cjs/utils/settingsValidation/storage/storageCS.js +0 -49
- package/cjs/utils/settingsValidation/types.js +0 -2
- package/cjs/utils/settingsValidation/url.js +0 -31
- package/cjs/utils/time/index.js +0 -11
- package/cjs/utils/timeTracker/now/browser.js +0 -15
- package/cjs/utils/timeTracker/now/node.js +0 -9
- package/cjs/utils/timeTracker/timer.js +0 -10
- package/esm/consent/index.js +0 -6
- package/esm/consent/sdkUserConsent.js +0 -56
- package/esm/dtos/types.js +0 -1
- package/esm/evaluator/Engine.js +0 -54
- package/esm/evaluator/combiners/and.js +0 -21
- package/esm/evaluator/combiners/ifelseif.js +0 -44
- package/esm/evaluator/condition/engineUtils.js +0 -24
- package/esm/evaluator/condition/index.js +0 -37
- package/esm/evaluator/convertions/index.js +0 -6
- package/esm/evaluator/index.js +0 -128
- package/esm/evaluator/matchers/all.js +0 -5
- package/esm/evaluator/matchers/between.js +0 -6
- package/esm/evaluator/matchers/boolean.js +0 -6
- package/esm/evaluator/matchers/cont_all.js +0 -19
- package/esm/evaluator/matchers/cont_any.js +0 -14
- package/esm/evaluator/matchers/cont_str.js +0 -7
- package/esm/evaluator/matchers/dependency.js +0 -24
- package/esm/evaluator/matchers/eq.js +0 -6
- package/esm/evaluator/matchers/eq_set.js +0 -16
- package/esm/evaluator/matchers/ew.js +0 -7
- package/esm/evaluator/matchers/gte.js +0 -6
- package/esm/evaluator/matchers/index.js +0 -62
- package/esm/evaluator/matchers/large_segment.js +0 -6
- package/esm/evaluator/matchers/lte.js +0 -6
- package/esm/evaluator/matchers/matcherTypes.js +0 -42
- package/esm/evaluator/matchers/part_of.js +0 -16
- package/esm/evaluator/matchers/prerequisites.js +0 -18
- package/esm/evaluator/matchers/rbsegment.js +0 -52
- package/esm/evaluator/matchers/segment.js +0 -6
- package/esm/evaluator/matchers/semver_between.js +0 -10
- package/esm/evaluator/matchers/semver_eq.js +0 -9
- package/esm/evaluator/matchers/semver_gte.js +0 -9
- package/esm/evaluator/matchers/semver_inlist.js +0 -12
- package/esm/evaluator/matchers/semver_lte.js +0 -9
- package/esm/evaluator/matchers/string.js +0 -7
- package/esm/evaluator/matchers/sw.js +0 -7
- package/esm/evaluator/matchers/whitelist.js +0 -7
- package/esm/evaluator/matchersTransform/index.js +0 -100
- package/esm/evaluator/matchersTransform/segment.js +0 -8
- package/esm/evaluator/matchersTransform/unaryNumeric.js +0 -6
- package/esm/evaluator/matchersTransform/whitelist.js +0 -6
- package/esm/evaluator/parser/index.js +0 -57
- package/esm/evaluator/treatments/index.js +0 -39
- package/esm/evaluator/types.js +0 -1
- package/esm/evaluator/value/index.js +0 -33
- package/esm/evaluator/value/sanitize.js +0 -90
- package/esm/integrations/pluggable.js +0 -31
- package/esm/integrations/types.js +0 -1
- package/esm/listeners/browser.js +0 -118
- package/esm/listeners/node.js +0 -65
- package/esm/listeners/types.js +0 -1
- package/esm/logger/browser/DebugLogger.js +0 -5
- package/esm/logger/browser/ErrorLogger.js +0 -5
- package/esm/logger/browser/InfoLogger.js +0 -5
- package/esm/logger/browser/WarnLogger.js +0 -5
- package/esm/logger/constants.js +0 -135
- package/esm/logger/index.js +0 -95
- package/esm/logger/messages/debug.js +0 -32
- package/esm/logger/messages/error.js +0 -38
- package/esm/logger/messages/info.js +0 -33
- package/esm/logger/messages/warn.js +0 -38
- package/esm/logger/sdkLogger.js +0 -41
- package/esm/logger/types.js +0 -1
- package/esm/readiness/constants.js +0 -10
- package/esm/readiness/readinessManager.js +0 -150
- package/esm/readiness/sdkReadinessManager.js +0 -100
- package/esm/readiness/types.js +0 -1
- package/esm/sdkClient/client.js +0 -179
- package/esm/sdkClient/clientAttributesDecoration.js +0 -118
- package/esm/sdkClient/clientCS.js +0 -26
- package/esm/sdkClient/clientInputValidation.js +0 -143
- package/esm/sdkClient/identity.js +0 -3
- package/esm/sdkClient/sdkClient.js +0 -60
- package/esm/sdkClient/sdkClientMethod.js +0 -18
- package/esm/sdkClient/sdkClientMethodCS.js +0 -62
- package/esm/sdkFactory/index.js +0 -104
- package/esm/sdkFactory/types.js +0 -1
- package/esm/sdkManager/index.js +0 -92
- package/esm/services/decorateHeaders.js +0 -35
- package/esm/services/splitApi.js +0 -127
- package/esm/services/splitHttpClient.js +0 -78
- package/esm/services/types.js +0 -1
- package/esm/storages/AbstractMySegmentsCacheSync.js +0 -57
- package/esm/storages/AbstractSplitsCacheAsync.js +0 -48
- package/esm/storages/AbstractSplitsCacheSync.js +0 -70
- package/esm/storages/KeyBuilder.js +0 -63
- package/esm/storages/KeyBuilderCS.js +0 -61
- package/esm/storages/KeyBuilderSS.js +0 -57
- package/esm/storages/dataLoader.js +0 -46
- package/esm/storages/findLatencyIndex.js +0 -14
- package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -78
- package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -114
- package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +0 -201
- package/esm/storages/inLocalStorage/constants.js +0 -2
- package/esm/storages/inLocalStorage/index.js +0 -87
- package/esm/storages/inLocalStorage/storageAdapter.js +0 -50
- package/esm/storages/inLocalStorage/validateCache.js +0 -81
- package/esm/storages/inMemory/AttributesCacheInMemory.js +0 -67
- package/esm/storages/inMemory/EventsCacheInMemory.js +0 -60
- package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -62
- package/esm/storages/inMemory/ImpressionsCacheInMemory.js +0 -48
- package/esm/storages/inMemory/InMemoryStorage.js +0 -42
- package/esm/storages/inMemory/InMemoryStorageCS.js +0 -59
- package/esm/storages/inMemory/MySegmentsCacheInMemory.js +0 -43
- package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -58
- package/esm/storages/inMemory/SegmentsCacheInMemory.js +0 -58
- package/esm/storages/inMemory/SplitsCacheInMemory.js +0 -118
- package/esm/storages/inMemory/TelemetryCacheInMemory.js +0 -202
- package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +0 -68
- package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -68
- package/esm/storages/inRedis/EventsCacheInRedis.js +0 -57
- package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -82
- package/esm/storages/inRedis/ImpressionsCacheInRedis.js +0 -42
- package/esm/storages/inRedis/RBSegmentsCacheInRedis.js +0 -61
- package/esm/storages/inRedis/RedisAdapter.js +0 -192
- package/esm/storages/inRedis/SegmentsCacheInRedis.js +0 -54
- package/esm/storages/inRedis/SplitsCacheInRedis.js +0 -240
- package/esm/storages/inRedis/TelemetryCacheInRedis.js +0 -121
- package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +0 -66
- package/esm/storages/inRedis/constants.js +0 -4
- package/esm/storages/inRedis/index.js +0 -69
- package/esm/storages/pluggable/EventsCachePluggable.js +0 -61
- package/esm/storages/pluggable/ImpressionCountsCachePluggable.js +0 -78
- package/esm/storages/pluggable/ImpressionsCachePluggable.js +0 -45
- package/esm/storages/pluggable/RBSegmentsCachePluggable.js +0 -61
- package/esm/storages/pluggable/SegmentsCachePluggable.js +0 -77
- package/esm/storages/pluggable/SplitsCachePluggable.js +0 -209
- package/esm/storages/pluggable/TelemetryCachePluggable.js +0 -138
- package/esm/storages/pluggable/UniqueKeysCachePluggable.js +0 -59
- package/esm/storages/pluggable/constants.js +0 -1
- package/esm/storages/pluggable/inMemoryWrapper.js +0 -137
- package/esm/storages/pluggable/index.js +0 -131
- package/esm/storages/pluggable/wrapperAdapter.js +0 -49
- package/esm/storages/types.js +0 -1
- package/esm/storages/utils.js +0 -66
- package/esm/sync/offline/LocalhostFromObject.js +0 -5
- package/esm/sync/offline/splitsParser/parseCondition.js +0 -51
- package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +0 -58
- package/esm/sync/offline/splitsParser/types.js +0 -1
- package/esm/sync/offline/syncManagerOffline.js +0 -48
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +0 -66
- package/esm/sync/polling/fetchers/mySegmentsFetcher.js +0 -14
- package/esm/sync/polling/fetchers/segmentChangesFetcher.js +0 -30
- package/esm/sync/polling/fetchers/splitChangesFetcher.js +0 -64
- package/esm/sync/polling/fetchers/types.js +0 -1
- package/esm/sync/polling/pollingManagerCS.js +0 -96
- package/esm/sync/polling/pollingManagerSS.js +0 -45
- package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -9
- package/esm/sync/polling/syncTasks/segmentsSyncTask.js +0 -9
- package/esm/sync/polling/syncTasks/splitsSyncTask.js +0 -9
- package/esm/sync/polling/types.js +0 -1
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +0 -79
- package/esm/sync/polling/updaters/segmentChangesUpdater.js +0 -76
- package/esm/sync/polling/updaters/splitChangesUpdater.js +0 -184
- package/esm/sync/streaming/AuthClient/index.js +0 -38
- package/esm/sync/streaming/AuthClient/types.js +0 -1
- package/esm/sync/streaming/SSEClient/index.js +0 -83
- package/esm/sync/streaming/SSEClient/types.js +0 -1
- package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +0 -94
- package/esm/sync/streaming/SSEHandler/NotificationParser.js +0 -36
- package/esm/sync/streaming/SSEHandler/index.js +0 -93
- package/esm/sync/streaming/SSEHandler/types.js +0 -13
- package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -120
- package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -88
- package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -132
- package/esm/sync/streaming/UpdateWorkers/constants.js +0 -3
- package/esm/sync/streaming/UpdateWorkers/types.js +0 -1
- package/esm/sync/streaming/constants.js +0 -40
- package/esm/sync/streaming/parseUtils.js +0 -90
- package/esm/sync/streaming/pushManager.js +0 -313
- package/esm/sync/streaming/types.js +0 -1
- package/esm/sync/submitters/eventsSubmitter.js +0 -24
- package/esm/sync/submitters/impressionCountsSubmitter.js +0 -31
- package/esm/sync/submitters/impressionsSubmitter.js +0 -49
- package/esm/sync/submitters/submitter.js +0 -61
- package/esm/sync/submitters/submitterManager.js +0 -42
- package/esm/sync/submitters/telemetrySubmitter.js +0 -119
- package/esm/sync/submitters/types.js +0 -1
- package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -23
- package/esm/sync/syncManagerOnline.js +0 -172
- package/esm/sync/syncTask.js +0 -80
- package/esm/sync/types.js +0 -1
- package/esm/trackers/eventTracker.js +0 -58
- package/esm/trackers/impressionObserver/ImpressionObserver.js +0 -15
- package/esm/trackers/impressionObserver/buildKey.js +0 -3
- package/esm/trackers/impressionObserver/impressionObserverCS.js +0 -10
- package/esm/trackers/impressionObserver/impressionObserverSS.js +0 -10
- package/esm/trackers/impressionObserver/types.js +0 -1
- package/esm/trackers/impressionsTracker.js +0 -74
- package/esm/trackers/strategy/strategyDebug.js +0 -16
- package/esm/trackers/strategy/strategyNone.js +0 -20
- package/esm/trackers/strategy/strategyOptimized.js +0 -24
- package/esm/trackers/telemetryTracker.js +0 -71
- package/esm/trackers/types.js +0 -1
- package/esm/trackers/uniqueKeysTracker.js +0 -36
- package/esm/types.js +0 -1
- package/esm/utils/Backoff.js +0 -38
- package/esm/utils/LRUCache/LinkedList.js +0 -111
- package/esm/utils/LRUCache/index.js +0 -39
- package/esm/utils/MinEventEmitter.js +0 -97
- package/esm/utils/Semver.js +0 -100
- package/esm/utils/base64/index.js +0 -70
- package/esm/utils/constants/index.js +0 -96
- package/esm/utils/decompress/index.js +0 -424
- package/esm/utils/env/isLocalStorageAvailable.js +0 -33
- package/esm/utils/env/isNode.js +0 -6
- package/esm/utils/inputValidation/apiKey.js +0 -48
- package/esm/utils/inputValidation/attribute.js +0 -16
- package/esm/utils/inputValidation/attributes.js +0 -20
- package/esm/utils/inputValidation/event.js +0 -24
- package/esm/utils/inputValidation/eventProperties.js +0 -69
- package/esm/utils/inputValidation/eventValue.js +0 -8
- package/esm/utils/inputValidation/index.js +0 -14
- package/esm/utils/inputValidation/isOperational.js +0 -13
- package/esm/utils/inputValidation/key.js +0 -47
- package/esm/utils/inputValidation/preloadedData.js +0 -55
- package/esm/utils/inputValidation/split.js +0 -26
- package/esm/utils/inputValidation/splitExistence.js +0 -15
- package/esm/utils/inputValidation/splits.js +0 -21
- package/esm/utils/inputValidation/trafficType.js +0 -25
- package/esm/utils/inputValidation/trafficTypeExistence.js +0 -27
- package/esm/utils/jwt/index.js +0 -13
- package/esm/utils/jwt/types.js +0 -1
- package/esm/utils/key/index.js +0 -30
- package/esm/utils/labels/index.js +0 -9
- package/esm/utils/lang/binarySearch.js +0 -38
- package/esm/utils/lang/getFnName.js +0 -8
- package/esm/utils/lang/getGlobal.js +0 -14
- package/esm/utils/lang/index.js +0 -258
- package/esm/utils/lang/objectAssign.js +0 -17
- package/esm/utils/lang/sets.js +0 -17
- package/esm/utils/murmur3/common.js +0 -39
- package/esm/utils/murmur3/legacy.js +0 -39
- package/esm/utils/murmur3/murmur3.js +0 -57
- package/esm/utils/murmur3/murmur3_128.js +0 -215
- package/esm/utils/murmur3/murmur3_128_x86.js +0 -150
- package/esm/utils/murmur3/murmur3_64.js +0 -32
- package/esm/utils/murmur3/utfx.js +0 -102
- package/esm/utils/promise/thenable.js +0 -4
- package/esm/utils/promise/timeout.js +0 -16
- package/esm/utils/promise/wrapper.js +0 -54
- package/esm/utils/settingsValidation/consent.js +0 -12
- package/esm/utils/settingsValidation/impressionsMode.js +0 -10
- package/esm/utils/settingsValidation/index.js +0 -180
- package/esm/utils/settingsValidation/integrations/common.js +0 -23
- package/esm/utils/settingsValidation/integrations/configurable.js +0 -14
- package/esm/utils/settingsValidation/integrations/pluggable.js +0 -11
- package/esm/utils/settingsValidation/logger/builtinLogger.js +0 -42
- package/esm/utils/settingsValidation/logger/commons.js +0 -24
- package/esm/utils/settingsValidation/logger/pluggableLogger.js +0 -28
- package/esm/utils/settingsValidation/mode.js +0 -15
- package/esm/utils/settingsValidation/runtime.js +0 -7
- package/esm/utils/settingsValidation/splitFilters.js +0 -183
- package/esm/utils/settingsValidation/storage/storageCS.js +0 -44
- package/esm/utils/settingsValidation/types.js +0 -1
- package/esm/utils/settingsValidation/url.js +0 -27
- package/esm/utils/time/index.js +0 -7
- package/esm/utils/timeTracker/now/browser.js +0 -12
- package/esm/utils/timeTracker/now/node.js +0 -5
- package/esm/utils/timeTracker/timer.js +0 -6
- package/src/consent/index.ts +0 -8
- package/src/consent/sdkUserConsent.ts +0 -60
- package/src/dtos/types.ts +0 -294
- package/src/evaluator/Engine.ts +0 -73
- package/src/evaluator/combiners/and.ts +0 -29
- package/src/evaluator/combiners/ifelseif.ts +0 -56
- package/src/evaluator/condition/engineUtils.ts +0 -31
- package/src/evaluator/condition/index.ts +0 -50
- package/src/evaluator/convertions/index.ts +0 -7
- package/src/evaluator/index.ts +0 -199
- package/src/evaluator/matchers/all.ts +0 -6
- package/src/evaluator/matchers/between.ts +0 -10
- package/src/evaluator/matchers/boolean.ts +0 -8
- package/src/evaluator/matchers/cont_all.ts +0 -18
- package/src/evaluator/matchers/cont_any.ts +0 -13
- package/src/evaluator/matchers/cont_str.ts +0 -9
- package/src/evaluator/matchers/dependency.ts +0 -32
- package/src/evaluator/matchers/eq.ts +0 -8
- package/src/evaluator/matchers/eq_set.ts +0 -15
- package/src/evaluator/matchers/ew.ts +0 -9
- package/src/evaluator/matchers/gte.ts +0 -8
- package/src/evaluator/matchers/index.ts +0 -70
- package/src/evaluator/matchers/large_segment.ts +0 -11
- package/src/evaluator/matchers/lte.ts +0 -8
- package/src/evaluator/matchers/matcherTypes.ts +0 -42
- package/src/evaluator/matchers/part_of.ts +0 -15
- package/src/evaluator/matchers/prerequisites.ts +0 -24
- package/src/evaluator/matchers/rbsegment.ts +0 -74
- package/src/evaluator/matchers/segment.ts +0 -11
- package/src/evaluator/matchers/semver_between.ts +0 -15
- package/src/evaluator/matchers/semver_eq.ts +0 -13
- package/src/evaluator/matchers/semver_gte.ts +0 -13
- package/src/evaluator/matchers/semver_inlist.ts +0 -16
- package/src/evaluator/matchers/semver_lte.ts +0 -13
- package/src/evaluator/matchers/string.ts +0 -9
- package/src/evaluator/matchers/sw.ts +0 -9
- package/src/evaluator/matchers/whitelist.ts +0 -9
- package/src/evaluator/matchersTransform/index.ts +0 -118
- package/src/evaluator/matchersTransform/segment.ts +0 -10
- package/src/evaluator/matchersTransform/unaryNumeric.ts +0 -8
- package/src/evaluator/matchersTransform/whitelist.ts +0 -8
- package/src/evaluator/parser/index.ts +0 -82
- package/src/evaluator/treatments/index.ts +0 -53
- package/src/evaluator/types.ts +0 -34
- package/src/evaluator/value/index.ts +0 -37
- package/src/evaluator/value/sanitize.ts +0 -106
- package/src/index.ts +0 -14
- package/src/integrations/pluggable.ts +0 -39
- package/src/integrations/types.ts +0 -21
- package/src/listeners/browser.ts +0 -138
- package/src/listeners/node.ts +0 -81
- package/src/listeners/types.ts +0 -4
- package/src/logger/browser/DebugLogger.ts +0 -6
- package/src/logger/browser/ErrorLogger.ts +0 -6
- package/src/logger/browser/InfoLogger.ts +0 -6
- package/src/logger/browser/WarnLogger.ts +0 -6
- package/src/logger/constants.ts +0 -139
- package/src/logger/index.ts +0 -110
- package/src/logger/messages/debug.ts +0 -33
- package/src/logger/messages/error.ts +0 -39
- package/src/logger/messages/info.ts +0 -36
- package/src/logger/messages/warn.ts +0 -40
- package/src/logger/sdkLogger.ts +0 -46
- package/src/logger/types.ts +0 -21
- package/src/readiness/constants.ts +0 -12
- package/src/readiness/readinessManager.ts +0 -170
- package/src/readiness/sdkReadinessManager.ts +0 -121
- package/src/readiness/types.ts +0 -85
- package/src/sdkClient/client.ts +0 -217
- package/src/sdkClient/clientAttributesDecoration.ts +0 -139
- package/src/sdkClient/clientCS.ts +0 -34
- package/src/sdkClient/clientInputValidation.ts +0 -178
- package/src/sdkClient/identity.ts +0 -5
- package/src/sdkClient/sdkClient.ts +0 -77
- package/src/sdkClient/sdkClientMethod.ts +0 -24
- package/src/sdkClient/sdkClientMethodCS.ts +0 -85
- package/src/sdkFactory/index.ts +0 -131
- package/src/sdkFactory/types.ts +0 -119
- package/src/sdkManager/index.ts +0 -114
- package/src/services/decorateHeaders.ts +0 -37
- package/src/services/splitApi.ts +0 -148
- package/src/services/splitHttpClient.ts +0 -84
- package/src/services/types.ts +0 -86
- package/src/storages/AbstractMySegmentsCacheSync.ts +0 -94
- package/src/storages/AbstractSplitsCacheAsync.ts +0 -63
- package/src/storages/AbstractSplitsCacheSync.ts +0 -94
- package/src/storages/KeyBuilder.ts +0 -81
- package/src/storages/KeyBuilderCS.ts +0 -79
- package/src/storages/KeyBuilderSS.ts +0 -74
- package/src/storages/dataLoader.ts +0 -55
- package/src/storages/findLatencyIndex.ts +0 -16
- package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +0 -87
- package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -137
- package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +0 -241
- package/src/storages/inLocalStorage/constants.ts +0 -2
- package/src/storages/inLocalStorage/index.ts +0 -104
- package/src/storages/inLocalStorage/storageAdapter.ts +0 -62
- package/src/storages/inLocalStorage/validateCache.ts +0 -99
- package/src/storages/inMemory/AttributesCacheInMemory.ts +0 -74
- package/src/storages/inMemory/EventsCacheInMemory.ts +0 -76
- package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +0 -69
- package/src/storages/inMemory/ImpressionsCacheInMemory.ts +0 -58
- package/src/storages/inMemory/InMemoryStorage.ts +0 -50
- package/src/storages/inMemory/InMemoryStorageCS.ts +0 -69
- package/src/storages/inMemory/MySegmentsCacheInMemory.ts +0 -49
- package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -68
- package/src/storages/inMemory/SegmentsCacheInMemory.ts +0 -74
- package/src/storages/inMemory/SplitsCacheInMemory.ts +0 -130
- package/src/storages/inMemory/TelemetryCacheInMemory.ts +0 -263
- package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +0 -79
- package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +0 -80
- package/src/storages/inRedis/EventsCacheInRedis.ts +0 -75
- package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +0 -95
- package/src/storages/inRedis/ImpressionsCacheInRedis.ts +0 -61
- package/src/storages/inRedis/RBSegmentsCacheInRedis.ts +0 -79
- package/src/storages/inRedis/RedisAdapter.ts +0 -209
- package/src/storages/inRedis/SegmentsCacheInRedis.ts +0 -70
- package/src/storages/inRedis/SplitsCacheInRedis.ts +0 -268
- package/src/storages/inRedis/TelemetryCacheInRedis.ts +0 -144
- package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +0 -75
- package/src/storages/inRedis/constants.ts +0 -4
- package/src/storages/inRedis/index.ts +0 -85
- package/src/storages/package.json +0 -3
- package/src/storages/pluggable/EventsCachePluggable.ts +0 -79
- package/src/storages/pluggable/ImpressionCountsCachePluggable.ts +0 -92
- package/src/storages/pluggable/ImpressionsCachePluggable.ts +0 -63
- package/src/storages/pluggable/RBSegmentsCachePluggable.ts +0 -76
- package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -90
- package/src/storages/pluggable/SplitsCachePluggable.ts +0 -230
- package/src/storages/pluggable/TelemetryCachePluggable.ts +0 -159
- package/src/storages/pluggable/UniqueKeysCachePluggable.ts +0 -67
- package/src/storages/pluggable/constants.ts +0 -1
- package/src/storages/pluggable/inMemoryWrapper.ts +0 -130
- package/src/storages/pluggable/index.ts +0 -152
- package/src/storages/pluggable/wrapperAdapter.ts +0 -58
- package/src/storages/types.ts +0 -538
- package/src/storages/utils.ts +0 -80
- package/src/sync/offline/LocalhostFromObject.ts +0 -6
- package/src/sync/offline/splitsParser/parseCondition.ts +0 -59
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +0 -72
- package/src/sync/offline/splitsParser/types.ts +0 -5
- package/src/sync/offline/syncManagerOffline.ts +0 -66
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +0 -97
- package/src/sync/polling/fetchers/mySegmentsFetcher.ts +0 -25
- package/src/sync/polling/fetchers/segmentChangesFetcher.ts +0 -41
- package/src/sync/polling/fetchers/splitChangesFetcher.ts +0 -85
- package/src/sync/polling/fetchers/types.ts +0 -25
- package/src/sync/polling/pollingManagerCS.ts +0 -116
- package/src/sync/polling/pollingManagerSS.ts +0 -56
- package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +0 -34
- package/src/sync/polling/syncTasks/segmentsSyncTask.ts +0 -30
- package/src/sync/polling/syncTasks/splitsSyncTask.ts +0 -35
- package/src/sync/polling/types.ts +0 -33
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +0 -104
- package/src/sync/polling/updaters/segmentChangesUpdater.ts +0 -92
- package/src/sync/polling/updaters/splitChangesUpdater.ts +0 -220
- package/src/sync/streaming/AuthClient/index.ts +0 -42
- package/src/sync/streaming/AuthClient/types.ts +0 -20
- package/src/sync/streaming/SSEClient/index.ts +0 -103
- package/src/sync/streaming/SSEClient/types.ts +0 -13
- package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +0 -107
- package/src/sync/streaming/SSEHandler/NotificationParser.ts +0 -40
- package/src/sync/streaming/SSEHandler/index.ts +0 -105
- package/src/sync/streaming/SSEHandler/types.ts +0 -73
- package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +0 -134
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +0 -99
- package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +0 -145
- package/src/sync/streaming/UpdateWorkers/constants.ts +0 -3
- package/src/sync/streaming/UpdateWorkers/types.ts +0 -4
- package/src/sync/streaming/constants.ts +0 -44
- package/src/sync/streaming/parseUtils.ts +0 -100
- package/src/sync/streaming/pushManager.ts +0 -358
- package/src/sync/streaming/types.ts +0 -51
- package/src/sync/submitters/eventsSubmitter.ts +0 -35
- package/src/sync/submitters/impressionCountsSubmitter.ts +0 -44
- package/src/sync/submitters/impressionsSubmitter.ts +0 -66
- package/src/sync/submitters/submitter.ts +0 -76
- package/src/sync/submitters/submitterManager.ts +0 -48
- package/src/sync/submitters/telemetrySubmitter.ts +0 -148
- package/src/sync/submitters/types.ts +0 -241
- package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -35
- package/src/sync/syncManagerOnline.ts +0 -195
- package/src/sync/syncTask.ts +0 -83
- package/src/sync/types.ts +0 -48
- package/src/trackers/eventTracker.ts +0 -72
- package/src/trackers/impressionObserver/ImpressionObserver.ts +0 -20
- package/src/trackers/impressionObserver/buildKey.ts +0 -5
- package/src/trackers/impressionObserver/impressionObserverCS.ts +0 -14
- package/src/trackers/impressionObserver/impressionObserverSS.ts +0 -14
- package/src/trackers/impressionObserver/types.ts +0 -5
- package/src/trackers/impressionsTracker.ts +0 -87
- package/src/trackers/strategy/strategyDebug.ts +0 -23
- package/src/trackers/strategy/strategyNone.ts +0 -28
- package/src/trackers/strategy/strategyOptimized.ts +0 -35
- package/src/trackers/telemetryTracker.ts +0 -73
- package/src/trackers/types.ts +0 -86
- package/src/trackers/uniqueKeysTracker.ts +0 -50
- package/src/types.ts +0 -79
- package/src/utils/Backoff.ts +0 -51
- package/src/utils/LRUCache/LinkedList.ts +0 -130
- package/src/utils/LRUCache/index.ts +0 -43
- package/src/utils/MinEventEmitter.ts +0 -102
- package/src/utils/Semver.ts +0 -111
- package/src/utils/base64/index.ts +0 -74
- package/src/utils/constants/index.ts +0 -116
- package/src/utils/decompress/index.ts +0 -429
- package/src/utils/env/isLocalStorageAvailable.ts +0 -32
- package/src/utils/env/isNode.ts +0 -6
- package/src/utils/inputValidation/apiKey.ts +0 -52
- package/src/utils/inputValidation/attribute.ts +0 -21
- package/src/utils/inputValidation/attributes.ts +0 -26
- package/src/utils/inputValidation/event.ts +0 -24
- package/src/utils/inputValidation/eventProperties.ts +0 -78
- package/src/utils/inputValidation/eventValue.ts +0 -11
- package/src/utils/inputValidation/index.ts +0 -14
- package/src/utils/inputValidation/isOperational.ts +0 -17
- package/src/utils/inputValidation/key.ts +0 -51
- package/src/utils/inputValidation/preloadedData.ts +0 -57
- package/src/utils/inputValidation/split.ts +0 -27
- package/src/utils/inputValidation/splitExistence.ts +0 -19
- package/src/utils/inputValidation/splits.ts +0 -21
- package/src/utils/inputValidation/trafficType.ts +0 -27
- package/src/utils/inputValidation/trafficTypeExistence.ts +0 -33
- package/src/utils/jwt/index.ts +0 -16
- package/src/utils/jwt/types.ts +0 -10
- package/src/utils/key/index.ts +0 -34
- package/src/utils/labels/index.ts +0 -9
- package/src/utils/lang/binarySearch.ts +0 -41
- package/src/utils/lang/getFnName.ts +0 -8
- package/src/utils/lang/getGlobal.ts +0 -17
- package/src/utils/lang/index.ts +0 -279
- package/src/utils/lang/objectAssign.ts +0 -25
- package/src/utils/lang/sets.ts +0 -17
- package/src/utils/murmur3/common.ts +0 -54
- package/src/utils/murmur3/legacy.ts +0 -48
- package/src/utils/murmur3/murmur3.ts +0 -74
- package/src/utils/murmur3/murmur3_128.ts +0 -273
- package/src/utils/murmur3/murmur3_128_x86.ts +0 -188
- package/src/utils/murmur3/murmur3_64.ts +0 -36
- package/src/utils/murmur3/utfx.ts +0 -109
- package/src/utils/promise/thenable.ts +0 -4
- package/src/utils/promise/timeout.ts +0 -17
- package/src/utils/promise/wrapper.ts +0 -60
- package/src/utils/settingsValidation/consent.ts +0 -16
- package/src/utils/settingsValidation/impressionsMode.ts +0 -14
- package/src/utils/settingsValidation/index.ts +0 -207
- package/src/utils/settingsValidation/integrations/common.ts +0 -27
- package/src/utils/settingsValidation/integrations/configurable.ts +0 -20
- package/src/utils/settingsValidation/integrations/pluggable.ts +0 -19
- package/src/utils/settingsValidation/logger/builtinLogger.ts +0 -54
- package/src/utils/settingsValidation/logger/commons.ts +0 -24
- package/src/utils/settingsValidation/logger/pluggableLogger.ts +0 -35
- package/src/utils/settingsValidation/mode.ts +0 -17
- package/src/utils/settingsValidation/runtime.ts +0 -9
- package/src/utils/settingsValidation/splitFilters.ts +0 -197
- package/src/utils/settingsValidation/storage/storageCS.ts +0 -52
- package/src/utils/settingsValidation/types.ts +0 -27
- package/src/utils/settingsValidation/url.ts +0 -30
- package/src/utils/time/index.ts +0 -8
- package/src/utils/timeTracker/now/browser.ts +0 -12
- package/src/utils/timeTracker/now/node.ts +0 -6
- package/src/utils/timeTracker/timer.ts +0 -7
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* wraps a given promise in a new one with a default onRejected function,
|
|
3
|
-
* that handles the promise rejection if not other onRejected handler is provided.
|
|
4
|
-
*
|
|
5
|
-
* Caveats:
|
|
6
|
-
* - There are some cases where the `defaultOnRejected` handler is not invoked
|
|
7
|
-
* and the promise rejection must be handled by the user (same as the Promise spec):
|
|
8
|
-
* - using async/await syntax with a transpiler to Promises
|
|
9
|
-
* - setting an `onFinally` handler as the first handler (e.g. `promiseWrapper(Promise.reject()).finally(...)`)
|
|
10
|
-
* - setting more than one handler with at least one of them being an onRejected handler
|
|
11
|
-
* - If the wrapped promise is rejected when using native async/await syntax, the `defaultOnRejected` handler is invoked
|
|
12
|
-
* and neither the catch block nor the remaining try block are executed.
|
|
13
|
-
*
|
|
14
|
-
* @param customPromise - promise to wrap
|
|
15
|
-
* @param defaultOnRejected - default onRejected function
|
|
16
|
-
* @returns a promise that doesn't need to be handled for rejection (except when using async/await syntax) and
|
|
17
|
-
* includes a method named `hasOnFulfilled` that returns true if the promise has attached an onFulfilled handler.
|
|
18
|
-
*/
|
|
19
|
-
export function promiseWrapper(customPromise, defaultOnRejected) {
|
|
20
|
-
var hasOnFulfilled = false;
|
|
21
|
-
var hasOnRejected = false;
|
|
22
|
-
function chain(promise) {
|
|
23
|
-
var newPromise = new Promise(function (res, rej) {
|
|
24
|
-
return promise.then(res, function (value) {
|
|
25
|
-
if (hasOnRejected) {
|
|
26
|
-
rej(value);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
defaultOnRejected(value);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
var originalThen = newPromise.then;
|
|
34
|
-
// Using `defineProperty` in case Promise.prototype.then property is not writable
|
|
35
|
-
Object.defineProperty(newPromise, 'then', {
|
|
36
|
-
value: function (onfulfilled, onrejected) {
|
|
37
|
-
var result = originalThen.call(newPromise, onfulfilled, onrejected);
|
|
38
|
-
if (typeof onfulfilled === 'function')
|
|
39
|
-
hasOnFulfilled = true;
|
|
40
|
-
if (typeof onrejected === 'function') {
|
|
41
|
-
hasOnRejected = true;
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return chain(result);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
return newPromise;
|
|
50
|
-
}
|
|
51
|
-
var result = chain(customPromise);
|
|
52
|
-
result.hasOnFulfilled = function () { return hasOnFulfilled; };
|
|
53
|
-
return result;
|
|
54
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
|
|
2
|
-
import { CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN } from '../constants';
|
|
3
|
-
import { stringToUpperCase } from '../lang';
|
|
4
|
-
var userConsentValues = [CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN];
|
|
5
|
-
export function validateConsent(_a) {
|
|
6
|
-
var userConsent = _a.userConsent, log = _a.log;
|
|
7
|
-
userConsent = stringToUpperCase(userConsent);
|
|
8
|
-
if (userConsentValues.indexOf(userConsent) > -1)
|
|
9
|
-
return userConsent;
|
|
10
|
-
log.error(ERROR_INVALID_CONFIG_PARAM, ['userConsent', userConsentValues, CONSENT_GRANTED]);
|
|
11
|
-
return CONSENT_GRANTED;
|
|
12
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
|
|
2
|
-
import { DEBUG, OPTIMIZED, NONE } from '../constants';
|
|
3
|
-
import { stringToUpperCase } from '../lang';
|
|
4
|
-
export function validImpressionsMode(log, impressionsMode) {
|
|
5
|
-
impressionsMode = stringToUpperCase(impressionsMode);
|
|
6
|
-
if ([DEBUG, OPTIMIZED, NONE].indexOf(impressionsMode) > -1)
|
|
7
|
-
return impressionsMode;
|
|
8
|
-
log.error(ERROR_INVALID_CONFIG_PARAM, ['impressionsMode', [DEBUG, OPTIMIZED, NONE], OPTIMIZED]);
|
|
9
|
-
return OPTIMIZED;
|
|
10
|
-
}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import { merge, get } from '../lang';
|
|
2
|
-
import { validateMode } from './mode';
|
|
3
|
-
import { validateSplitFilters } from './splitFilters';
|
|
4
|
-
import { STANDALONE_MODE, OPTIMIZED, LOCALHOST_MODE, DEBUG, FLAG_SPEC_VERSION } from '../constants';
|
|
5
|
-
import { validImpressionsMode } from './impressionsMode';
|
|
6
|
-
import { validateKey } from '../inputValidation/key';
|
|
7
|
-
import { ERROR_MIN_CONFIG_PARAM, LOG_PREFIX_CLIENT_INSTANTIATION } from '../../logger/constants';
|
|
8
|
-
// Exported for telemetry
|
|
9
|
-
export var base = {
|
|
10
|
-
// Define which kind of object you want to retrieve from SplitFactory
|
|
11
|
-
mode: STANDALONE_MODE,
|
|
12
|
-
core: {
|
|
13
|
-
// API token (tight to an environment)
|
|
14
|
-
authorizationKey: undefined,
|
|
15
|
-
// key used in your system (only required for browser version)
|
|
16
|
-
key: undefined,
|
|
17
|
-
// toggle impressions tracking of labels
|
|
18
|
-
labelsEnabled: true,
|
|
19
|
-
// toggle sendind (true) or not sending (false) IP and Host Name with impressions, events, and telemetries requests (only used on nodejs version)
|
|
20
|
-
IPAddressesEnabled: undefined
|
|
21
|
-
},
|
|
22
|
-
scheduler: {
|
|
23
|
-
// fetch feature updates each 60 sec
|
|
24
|
-
featuresRefreshRate: 60,
|
|
25
|
-
// fetch segments updates each 60 sec
|
|
26
|
-
segmentsRefreshRate: 60,
|
|
27
|
-
// publish telemetry stats each 3600 secs (1 hour)
|
|
28
|
-
telemetryRefreshRate: 3600,
|
|
29
|
-
// publish evaluations each 300 sec (default value for OPTIMIZED impressions mode)
|
|
30
|
-
impressionsRefreshRate: 300,
|
|
31
|
-
// fetch offline changes each 15 sec
|
|
32
|
-
offlineRefreshRate: 15,
|
|
33
|
-
// publish events every 60 seconds after the first flush
|
|
34
|
-
eventsPushRate: 60,
|
|
35
|
-
// how many events will be queued before flushing
|
|
36
|
-
eventsQueueSize: 500,
|
|
37
|
-
// how many impressions will be queued before flushing
|
|
38
|
-
impressionsQueueSize: 30000,
|
|
39
|
-
// backoff base seconds to wait before re attempting to connect to push notifications
|
|
40
|
-
pushRetryBackoffBase: 1,
|
|
41
|
-
},
|
|
42
|
-
urls: {
|
|
43
|
-
// CDN having all the information for your environment
|
|
44
|
-
sdk: 'https://sdk.split.io/api',
|
|
45
|
-
// SDK event and impression endpoints
|
|
46
|
-
events: 'https://events.split.io/api',
|
|
47
|
-
// SDK Auth Server
|
|
48
|
-
auth: 'https://auth.split.io/api',
|
|
49
|
-
// Streaming Server
|
|
50
|
-
streaming: 'https://streaming.split.io',
|
|
51
|
-
// Telemetry Server
|
|
52
|
-
telemetry: 'https://telemetry.split.io/api',
|
|
53
|
-
},
|
|
54
|
-
// Defines which kind of storage we should instantiate.
|
|
55
|
-
storage: undefined,
|
|
56
|
-
// Defines if the logs are enabled, SDK wide.
|
|
57
|
-
debug: undefined,
|
|
58
|
-
// Defines the impression listener.
|
|
59
|
-
impressionListener: undefined,
|
|
60
|
-
// Instance version.
|
|
61
|
-
version: undefined,
|
|
62
|
-
// List of integrations.
|
|
63
|
-
integrations: undefined,
|
|
64
|
-
// toggle using (true) or not using (false) Server-Side Events for synchronizing storage
|
|
65
|
-
streamingEnabled: true,
|
|
66
|
-
sync: {
|
|
67
|
-
splitFilters: undefined,
|
|
68
|
-
// impressions collection mode
|
|
69
|
-
impressionsMode: OPTIMIZED,
|
|
70
|
-
enabled: true,
|
|
71
|
-
flagSpecVersion: FLAG_SPEC_VERSION
|
|
72
|
-
},
|
|
73
|
-
// Logger
|
|
74
|
-
log: undefined
|
|
75
|
-
};
|
|
76
|
-
function fromSecondsToMillis(n) {
|
|
77
|
-
return Math.round(n * 1000);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Validates the given config and use it to build a settings object.
|
|
81
|
-
* NOTE: it doesn't validate the SDK Key. Call `validateApiKey` or `validateAndTrackApiKey` for that after settings validation.
|
|
82
|
-
*
|
|
83
|
-
* @param config - user defined configuration
|
|
84
|
-
* @param validationParams - defaults and fields validators used to validate and creates a settings object from a given config
|
|
85
|
-
*/
|
|
86
|
-
export function settingsValidation(config, validationParams) {
|
|
87
|
-
var defaults = validationParams.defaults, runtime = validationParams.runtime, storage = validationParams.storage, integrations = validationParams.integrations, logger = validationParams.logger, consent = validationParams.consent, flagSpec = validationParams.flagSpec;
|
|
88
|
-
// creates a settings object merging base, defaults and config objects.
|
|
89
|
-
var withDefaults = merge({}, base, defaults, config);
|
|
90
|
-
// Keeps reference to the `features` property
|
|
91
|
-
withDefaults.features = get(config, 'features');
|
|
92
|
-
// ensure a valid logger.
|
|
93
|
-
// First thing to validate, since other validators might use the logger.
|
|
94
|
-
var log = logger(withDefaults); // @ts-ignore, modify readonly prop
|
|
95
|
-
withDefaults.log = log;
|
|
96
|
-
// ensure a valid impressionsMode
|
|
97
|
-
var sync = withDefaults.sync;
|
|
98
|
-
sync.impressionsMode = validImpressionsMode(log, sync.impressionsMode);
|
|
99
|
-
function validateMinValue(paramName, actualValue, minValue) {
|
|
100
|
-
if (actualValue >= minValue)
|
|
101
|
-
return actualValue;
|
|
102
|
-
// actualValue is not a number or is lower than minValue
|
|
103
|
-
log.error(ERROR_MIN_CONFIG_PARAM, [paramName, minValue]);
|
|
104
|
-
return minValue;
|
|
105
|
-
}
|
|
106
|
-
// Scheduler periods
|
|
107
|
-
var scheduler = withDefaults.scheduler, startup = withDefaults.startup;
|
|
108
|
-
scheduler.featuresRefreshRate = fromSecondsToMillis(scheduler.featuresRefreshRate);
|
|
109
|
-
scheduler.segmentsRefreshRate = fromSecondsToMillis(scheduler.segmentsRefreshRate);
|
|
110
|
-
scheduler.offlineRefreshRate = fromSecondsToMillis(scheduler.offlineRefreshRate);
|
|
111
|
-
scheduler.eventsPushRate = fromSecondsToMillis(scheduler.eventsPushRate);
|
|
112
|
-
scheduler.telemetryRefreshRate = fromSecondsToMillis(validateMinValue('telemetryRefreshRate', scheduler.telemetryRefreshRate, 60));
|
|
113
|
-
// Default impressionsRefreshRate for DEBUG mode is 60 secs
|
|
114
|
-
if (get(config, 'scheduler.impressionsRefreshRate') === undefined && sync.impressionsMode === DEBUG)
|
|
115
|
-
scheduler.impressionsRefreshRate = 60;
|
|
116
|
-
scheduler.impressionsRefreshRate = fromSecondsToMillis(scheduler.impressionsRefreshRate);
|
|
117
|
-
// Log deprecation for old telemetry param
|
|
118
|
-
if (scheduler.metricsRefreshRate)
|
|
119
|
-
log.warn('`metricsRefreshRate` will be deprecated soon. For configuring telemetry rates, update `telemetryRefreshRate` value in configs');
|
|
120
|
-
// Startup periods
|
|
121
|
-
startup.requestTimeoutBeforeReady = fromSecondsToMillis(startup.requestTimeoutBeforeReady);
|
|
122
|
-
startup.readyTimeout = fromSecondsToMillis(startup.readyTimeout);
|
|
123
|
-
startup.eventsFirstPushWindow = fromSecondsToMillis(startup.eventsFirstPushWindow);
|
|
124
|
-
// ensure a valid SDK mode
|
|
125
|
-
// @ts-ignore, modify readonly prop
|
|
126
|
-
withDefaults.mode = validateMode(withDefaults.core.authorizationKey, withDefaults.mode);
|
|
127
|
-
// ensure a valid Storage based on mode defined.
|
|
128
|
-
// @ts-ignore, modify readonly prop
|
|
129
|
-
if (storage)
|
|
130
|
-
withDefaults.storage = storage(withDefaults);
|
|
131
|
-
// Validate key and TT (for client-side)
|
|
132
|
-
var maybeKey = withDefaults.core.key;
|
|
133
|
-
if (validationParams.acceptKey) {
|
|
134
|
-
// Although `key` is required in client-side, it can be omitted in LOCALHOST mode. In that case, the value `localhost_key` is used.
|
|
135
|
-
if (withDefaults.mode === LOCALHOST_MODE && maybeKey === undefined) {
|
|
136
|
-
withDefaults.core.key = 'localhost_key';
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
// Keeping same behavior than JS SDK: if settings key or TT are invalid,
|
|
140
|
-
// `false` value is used as bound key/TT of the default client, which leads to some issues.
|
|
141
|
-
// @ts-ignore, @TODO handle invalid keys as a non-recoverable error?
|
|
142
|
-
withDefaults.core.key = validateKey(log, maybeKey, LOG_PREFIX_CLIENT_INSTANTIATION);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
// On server-side, key is undefined and used to distinguish from client-side
|
|
147
|
-
if (maybeKey !== undefined)
|
|
148
|
-
log.warn('Provided `key` is ignored in server-side SDK.'); // @ts-ignore
|
|
149
|
-
withDefaults.core.key = undefined;
|
|
150
|
-
}
|
|
151
|
-
// Current ip/hostname information
|
|
152
|
-
// @ts-ignore, modify readonly prop
|
|
153
|
-
withDefaults.runtime = runtime(withDefaults);
|
|
154
|
-
// ensure a valid list of integrations.
|
|
155
|
-
// `integrations` returns an array of valid integration items.
|
|
156
|
-
// @ts-ignore, modify readonly prop
|
|
157
|
-
if (integrations)
|
|
158
|
-
withDefaults.integrations = integrations(withDefaults);
|
|
159
|
-
// validate push options
|
|
160
|
-
if (withDefaults.streamingEnabled !== false) { // @ts-ignore, modify readonly prop
|
|
161
|
-
withDefaults.streamingEnabled = true;
|
|
162
|
-
// Backoff bases.
|
|
163
|
-
// We are not checking if bases are positive numbers. Thus, we might be re-authenticating immediately (`setTimeout` with NaN or negative number)
|
|
164
|
-
scheduler.pushRetryBackoffBase = fromSecondsToMillis(scheduler.pushRetryBackoffBase);
|
|
165
|
-
}
|
|
166
|
-
// validate sync enabled
|
|
167
|
-
if (sync.enabled !== false) {
|
|
168
|
-
sync.enabled = true;
|
|
169
|
-
}
|
|
170
|
-
// validate the `splitFilters` settings and parse splits query
|
|
171
|
-
var splitFiltersValidation = validateSplitFilters(log, sync.splitFilters, withDefaults.mode);
|
|
172
|
-
sync.splitFilters = splitFiltersValidation.validFilters;
|
|
173
|
-
sync.__splitFiltersValidation = splitFiltersValidation;
|
|
174
|
-
// ensure a valid flag spec version
|
|
175
|
-
sync.flagSpecVersion = flagSpec ? flagSpec(withDefaults) : FLAG_SPEC_VERSION;
|
|
176
|
-
// ensure a valid user consent value
|
|
177
|
-
// @ts-ignore, modify readonly prop
|
|
178
|
-
withDefaults.userConsent = consent ? consent(withDefaults) : undefined;
|
|
179
|
-
return withDefaults;
|
|
180
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { WARN_INTEGRATION_INVALID } from '../../../logger/constants';
|
|
2
|
-
/**
|
|
3
|
-
* This function validates `settings.integrations` object
|
|
4
|
-
*
|
|
5
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
6
|
-
* @param integrationValidator - filter used to remove invalid integration items
|
|
7
|
-
* @param extraWarning - optional string used to better describe why an item might be invalid
|
|
8
|
-
*
|
|
9
|
-
* @returns array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
|
|
10
|
-
*/
|
|
11
|
-
export function validateIntegrations(settings, integrationValidator, extraWarning) {
|
|
12
|
-
var integrations = settings.integrations, log = settings.log;
|
|
13
|
-
// If integrations is not an array or an empty array, we return an empty array (no integrations).
|
|
14
|
-
if (!Array.isArray(integrations) || integrations.length === 0)
|
|
15
|
-
return [];
|
|
16
|
-
// We remove invalid integration items
|
|
17
|
-
var validIntegrations = integrations.filter(integrationValidator);
|
|
18
|
-
// Log a warning if at least one item is invalid
|
|
19
|
-
var invalids = integrations.length - validIntegrations.length;
|
|
20
|
-
if (invalids)
|
|
21
|
-
log.warn(WARN_INTEGRATION_INVALID, [invalids, extraWarning || '']);
|
|
22
|
-
return validIntegrations;
|
|
23
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { validateIntegrations } from './common';
|
|
2
|
-
import { isString } from '../../lang';
|
|
3
|
-
/**
|
|
4
|
-
* This function validates `settings.integrations` object that consists of a list of configuration items, used by the isomorphic JS SDK.
|
|
5
|
-
*
|
|
6
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
7
|
-
* @param validIntegrationTypes - list of integration types to filter from `settings.integrations`
|
|
8
|
-
*
|
|
9
|
-
* @returns array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
|
|
10
|
-
*/
|
|
11
|
-
export function validateConfigurableIntegrations(settings, validIntegrationTypes) {
|
|
12
|
-
if (validIntegrationTypes === void 0) { validIntegrationTypes = []; }
|
|
13
|
-
return validateIntegrations(settings, function (integration) { return integration && isString(integration.type) && validIntegrationTypes.indexOf(integration.type) > -1; }, 'Integration items must have a valid "type" value');
|
|
14
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { validateIntegrations } from './common';
|
|
2
|
-
/**
|
|
3
|
-
* This function validates `settings.integrations` object that consists of a list of pluggable integration factories.
|
|
4
|
-
*
|
|
5
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
6
|
-
*
|
|
7
|
-
* @returns array of valid integration factories. The array might be empty if `settings` object does not have valid integrations.
|
|
8
|
-
*/
|
|
9
|
-
export function validatePluggableIntegrations(settings) {
|
|
10
|
-
return validateIntegrations(settings, function (integration) { return typeof integration === 'function'; }, 'Integration items must be functions that initialize the integrations');
|
|
11
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { isLogLevelString, Logger, LogLevels } from '../../../logger';
|
|
2
|
-
import { isLocalStorageAvailable } from '../../env/isLocalStorageAvailable';
|
|
3
|
-
import { isNode } from '../../env/isNode';
|
|
4
|
-
import { codesDebug } from '../../../logger/messages/debug';
|
|
5
|
-
import { getLogLevel } from './commons';
|
|
6
|
-
var allCodes = new Map(codesDebug);
|
|
7
|
-
// @TODO set default debug setting instead of initialLogLevel when integrating in JS and Node packages
|
|
8
|
-
var LS_KEY = 'splitio_debug';
|
|
9
|
-
var ENV_VAR_KEY = 'SPLITIO_DEBUG';
|
|
10
|
-
/**
|
|
11
|
-
* Logger initial debug level, that is disabled ('NONE') by default.
|
|
12
|
-
* Acceptable values are: 'DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'.
|
|
13
|
-
* Other acceptable values are 'on', 'enable' and 'enabled', which are equivalent to 'DEBUG'.
|
|
14
|
-
* Any other string value is equivalent to disable.
|
|
15
|
-
*/
|
|
16
|
-
var initialState = String(
|
|
17
|
-
// eslint-disable-next-line no-undef
|
|
18
|
-
isNode ? process.env[ENV_VAR_KEY] : isLocalStorageAvailable() ? localStorage.getItem(LS_KEY) : '');
|
|
19
|
-
// By default it starts disabled.
|
|
20
|
-
var initialLogLevel = LogLevels.NONE;
|
|
21
|
-
// Kept to avoid a breaking change ('on', 'enable' and 'enabled' are equivalent)
|
|
22
|
-
if (/^(enabled?|on)/i.test(initialState)) {
|
|
23
|
-
initialLogLevel = LogLevels.DEBUG;
|
|
24
|
-
}
|
|
25
|
-
else if (isLogLevelString(initialState)) {
|
|
26
|
-
initialLogLevel = initialState;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Validates the `debug` property at config and use it to set the log level.
|
|
30
|
-
*
|
|
31
|
-
* @param settings - user config object, with an optional `debug` property of type boolean or string log level.
|
|
32
|
-
* @returns a logger instance with the log level at `settings.debug`. If `settings.debug` is invalid or not provided, `initialLogLevel` is used.
|
|
33
|
-
*/
|
|
34
|
-
export function validateLogger(settings) {
|
|
35
|
-
var debug = settings.debug;
|
|
36
|
-
var logLevel = debug !== undefined ? getLogLevel(debug) : initialLogLevel;
|
|
37
|
-
var log = new Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
|
|
38
|
-
// @ts-ignore // if logLevel is undefined at this point, it means that settings `debug` value is invalid
|
|
39
|
-
if (!logLevel)
|
|
40
|
-
log._log(LogLevels.ERROR, 'Invalid Log Level - No changes to the logs will be applied.');
|
|
41
|
-
return log;
|
|
42
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { LogLevels, isLogLevelString } from '../../../logger';
|
|
2
|
-
/**
|
|
3
|
-
* Returns the LogLevel for the given debugValue or undefined if it is invalid,
|
|
4
|
-
* i.e., if the debugValue is not a boolean or LogLevel string.
|
|
5
|
-
*
|
|
6
|
-
* @param debugValue - debug value at config
|
|
7
|
-
* @returns LogLevel of the given debugValue or undefined if the provided value is invalid
|
|
8
|
-
*/
|
|
9
|
-
export function getLogLevel(debugValue) {
|
|
10
|
-
if (typeof debugValue === 'boolean') {
|
|
11
|
-
if (debugValue) {
|
|
12
|
-
return LogLevels.DEBUG;
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
return LogLevels.NONE;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
else if (typeof debugValue === 'string' && isLogLevelString(debugValue)) {
|
|
19
|
-
return debugValue;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Logger, LogLevels } from '../../../logger';
|
|
2
|
-
import { getLogLevel } from './commons';
|
|
3
|
-
function isLogger(log) {
|
|
4
|
-
return log !== null && typeof log === 'object' && typeof log.debug === 'function' && typeof log.info === 'function' && typeof log.warn === 'function' && typeof log.error === 'function' && typeof log.setLogLevel === 'function';
|
|
5
|
-
}
|
|
6
|
-
// By default it starts disabled.
|
|
7
|
-
var initialLogLevel = LogLevels.NONE;
|
|
8
|
-
/**
|
|
9
|
-
* Validates the `debug` property at config and use it to set the logger.
|
|
10
|
-
*
|
|
11
|
-
* @param settings - user config object, with an optional `debug` property of type boolean, string log level or a Logger object.
|
|
12
|
-
* @returns a logger instance, that might be: the provided logger at `settings.debug`, or one with the given `debug` log level,
|
|
13
|
-
* or one with NONE log level if `debug` is not defined or invalid.
|
|
14
|
-
*/
|
|
15
|
-
export function validateLogger(settings) {
|
|
16
|
-
var debug = settings.debug;
|
|
17
|
-
var logLevel = initialLogLevel;
|
|
18
|
-
if (debug !== undefined) {
|
|
19
|
-
if (isLogger(debug))
|
|
20
|
-
return debug;
|
|
21
|
-
logLevel = getLogLevel(settings.debug);
|
|
22
|
-
}
|
|
23
|
-
var log = new Logger({ logLevel: logLevel || initialLogLevel });
|
|
24
|
-
// @ts-ignore // `debug` value is invalid if logLevel is undefined at this point
|
|
25
|
-
if (!logLevel)
|
|
26
|
-
log._log(LogLevels.ERROR, 'Invalid `debug` value at config. Logs will be disabled.');
|
|
27
|
-
return log;
|
|
28
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LOCALHOST_MODE, STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE, CONSUMER_PARTIAL_MODE } from '../constants';
|
|
2
|
-
export function validateMode(key, mode) {
|
|
3
|
-
// Leaving the comparison as is, in case we change the mode name but not the setting.
|
|
4
|
-
if (key === 'localhost')
|
|
5
|
-
return LOCALHOST_MODE;
|
|
6
|
-
if ([STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE, CONSUMER_PARTIAL_MODE].indexOf(mode) === -1)
|
|
7
|
-
throw Error('Invalid mode provided');
|
|
8
|
-
return mode;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Storage is async if mode is consumer or partial consumer
|
|
12
|
-
*/
|
|
13
|
-
export function isConsumerMode(mode) {
|
|
14
|
-
return CONSUMER_MODE === mode || CONSUMER_PARTIAL_MODE === mode;
|
|
15
|
-
}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { validateSplits } from '../inputValidation/splits';
|
|
2
|
-
import { WARN_SPLITS_FILTER_IGNORED, WARN_SPLITS_FILTER_EMPTY, WARN_SPLITS_FILTER_INVALID, SETTINGS_SPLITS_FILTER, LOG_PREFIX_SETTINGS, ERROR_SETS_FILTER_EXCLUSIVE, WARN_LOWERCASE_FLAGSET, WARN_INVALID_FLAGSET, WARN_FLAGSET_NOT_CONFIGURED } from '../../logger/constants';
|
|
3
|
-
import { objectAssign } from '../lang/objectAssign';
|
|
4
|
-
import { find, uniq } from '../lang';
|
|
5
|
-
import { isConsumerMode } from './mode';
|
|
6
|
-
// Split filters metadata.
|
|
7
|
-
// Ordered according to their precedency when forming the filter query string: `&names=<values>&prefixes=<values>`
|
|
8
|
-
var FILTERS_METADATA = [
|
|
9
|
-
{
|
|
10
|
-
type: 'bySet',
|
|
11
|
-
maxLength: 50,
|
|
12
|
-
queryParam: 'sets='
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
type: 'byName',
|
|
16
|
-
maxLength: 400,
|
|
17
|
-
queryParam: 'names='
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
type: 'byPrefix',
|
|
21
|
-
maxLength: 50,
|
|
22
|
-
queryParam: 'prefixes='
|
|
23
|
-
}
|
|
24
|
-
];
|
|
25
|
-
var VALID_FLAGSET_REGEX = /^[a-z0-9][_a-z0-9]{0,49}$/;
|
|
26
|
-
var CAPITAL_LETTERS_REGEX = /[A-Z]/;
|
|
27
|
-
/**
|
|
28
|
-
* Validates that the given value is a valid filter type
|
|
29
|
-
*/
|
|
30
|
-
function validateFilterType(maybeFilterType) {
|
|
31
|
-
return FILTERS_METADATA.some(function (filterMetadata) { return filterMetadata.type === maybeFilterType; });
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Validate, deduplicate and sort a given list of filter values.
|
|
35
|
-
*
|
|
36
|
-
* @param type - filter type string used for log messages
|
|
37
|
-
* @param values - list of values to validate, deduplicate and sort
|
|
38
|
-
* @param maxLength - max length allowed for the list of values
|
|
39
|
-
* @returns list of valid, unique and alphabetically sorted non-empty strings. The list is empty if `values` param is not a non-empty array or all its values are invalid.
|
|
40
|
-
*
|
|
41
|
-
* @throws Error if the sanitized list exceeds the length indicated by `maxLength`
|
|
42
|
-
*/
|
|
43
|
-
function validateSplitFilter(log, type, values, maxLength) {
|
|
44
|
-
// validate and remove invalid and duplicated values
|
|
45
|
-
var result = validateSplits(log, values, LOG_PREFIX_SETTINGS, type + " filter", type + " filter value");
|
|
46
|
-
if (result) {
|
|
47
|
-
if (type === 'bySet') {
|
|
48
|
-
result = sanitizeFlagSets(log, result, LOG_PREFIX_SETTINGS);
|
|
49
|
-
}
|
|
50
|
-
// check max length
|
|
51
|
-
if (result.length > maxLength)
|
|
52
|
-
throw new Error(maxLength + " unique values can be specified at most for '" + type + "' filter. You passed " + result.length + ". Please consider reducing the amount or using other filter.");
|
|
53
|
-
// sort values
|
|
54
|
-
result.sort();
|
|
55
|
-
}
|
|
56
|
-
return result || []; // returns empty array if `result` is `false`
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Returns a string representing the URL encoded query component of /splitChanges URL.
|
|
60
|
-
*
|
|
61
|
-
* @param groupedFilters - object of filters. Each filter must be a list of valid, unique and ordered string values.
|
|
62
|
-
* @returns null or string with the `split filter query` component of the URL.
|
|
63
|
-
*/
|
|
64
|
-
function queryStringBuilder(groupedFilters) {
|
|
65
|
-
var queryParams = [];
|
|
66
|
-
FILTERS_METADATA.forEach(function (_a) {
|
|
67
|
-
var type = _a.type, queryParam = _a.queryParam;
|
|
68
|
-
var filter = groupedFilters[type];
|
|
69
|
-
if (filter.length > 0)
|
|
70
|
-
queryParams.push(queryParam + filter.map(function (value) { return encodeURIComponent(value); }).join(','));
|
|
71
|
-
});
|
|
72
|
-
return queryParams.length > 0 ? '&' + queryParams.join('&') : null;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Sanitizes set names list taking into account:
|
|
76
|
-
* - It should be lowercase
|
|
77
|
-
* - Must adhere the following regular expression `/^[a-z0-9][_a-z0-9]{0,49}$/` that means
|
|
78
|
-
* - must start with a letter or number
|
|
79
|
-
* - Be in lowercase
|
|
80
|
-
* - Be alphanumeric
|
|
81
|
-
* - have a max length of 50 characters
|
|
82
|
-
*
|
|
83
|
-
* @returns sanitized list of set names
|
|
84
|
-
*/
|
|
85
|
-
function sanitizeFlagSets(log, flagSets, method) {
|
|
86
|
-
var sanitizedSets = flagSets
|
|
87
|
-
.map(function (flagSet) {
|
|
88
|
-
if (CAPITAL_LETTERS_REGEX.test(flagSet)) {
|
|
89
|
-
log.warn(WARN_LOWERCASE_FLAGSET, [method, flagSet]);
|
|
90
|
-
flagSet = flagSet.toLowerCase();
|
|
91
|
-
}
|
|
92
|
-
return flagSet;
|
|
93
|
-
})
|
|
94
|
-
.filter(function (flagSet) {
|
|
95
|
-
if (!VALID_FLAGSET_REGEX.test(flagSet)) {
|
|
96
|
-
log.warn(WARN_INVALID_FLAGSET, [method, flagSet, VALID_FLAGSET_REGEX, flagSet]);
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
if (typeof flagSet !== 'string')
|
|
100
|
-
return false;
|
|
101
|
-
return true;
|
|
102
|
-
});
|
|
103
|
-
return uniq(sanitizedSets);
|
|
104
|
-
}
|
|
105
|
-
function configuredFilter(validFilters, filterType) {
|
|
106
|
-
return find(validFilters, function (filter) { return filter.type === filterType && filter.values.length > 0; });
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Validates `splitFilters` configuration object and parses it into a query string for filtering splits on `/splitChanges` fetch.
|
|
110
|
-
*
|
|
111
|
-
* @param log - logger
|
|
112
|
-
* @param maybeSplitFilters - split filters configuration param provided by the user
|
|
113
|
-
* @param mode - settings mode
|
|
114
|
-
* @returns it returns an object with the following properties:
|
|
115
|
-
* - `validFilters`: the validated `splitFilters` configuration object defined by the user.
|
|
116
|
-
* - `queryString`: the parsed split filter query. it is null if all filters are invalid or all values in filters are invalid.
|
|
117
|
-
* - `groupedFilters`: list of values grouped by filter type.
|
|
118
|
-
*
|
|
119
|
-
* @throws Error if the some of the grouped list of values per filter exceeds the max allowed length
|
|
120
|
-
*/
|
|
121
|
-
export function validateSplitFilters(log, maybeSplitFilters, mode) {
|
|
122
|
-
// Validation result schema
|
|
123
|
-
var res = {
|
|
124
|
-
validFilters: [],
|
|
125
|
-
queryString: null,
|
|
126
|
-
groupedFilters: { bySet: [], byName: [], byPrefix: [] },
|
|
127
|
-
};
|
|
128
|
-
// do nothing if `splitFilters` param is not a non-empty array or mode is not STANDALONE
|
|
129
|
-
if (!maybeSplitFilters)
|
|
130
|
-
return res;
|
|
131
|
-
// Warn depending on the mode
|
|
132
|
-
if (isConsumerMode(mode)) {
|
|
133
|
-
log.warn(WARN_SPLITS_FILTER_IGNORED);
|
|
134
|
-
return res;
|
|
135
|
-
}
|
|
136
|
-
// Check collection type
|
|
137
|
-
if (!Array.isArray(maybeSplitFilters) || maybeSplitFilters.length === 0) {
|
|
138
|
-
log.warn(WARN_SPLITS_FILTER_EMPTY);
|
|
139
|
-
return res;
|
|
140
|
-
}
|
|
141
|
-
// Validate filters and group their values by filter type inside `groupedFilters` object
|
|
142
|
-
res.validFilters = maybeSplitFilters.filter(function (filter, index) {
|
|
143
|
-
if (filter && validateFilterType(filter.type) && Array.isArray(filter.values)) {
|
|
144
|
-
res.groupedFilters[filter.type] = res.groupedFilters[filter.type].concat(filter.values);
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
log.warn(WARN_SPLITS_FILTER_INVALID, [index]);
|
|
149
|
-
}
|
|
150
|
-
return false;
|
|
151
|
-
});
|
|
152
|
-
// By filter type, remove invalid and duplicated values and order them
|
|
153
|
-
FILTERS_METADATA.forEach(function (_a) {
|
|
154
|
-
var type = _a.type, maxLength = _a.maxLength;
|
|
155
|
-
if (res.groupedFilters[type].length > 0)
|
|
156
|
-
res.groupedFilters[type] = validateSplitFilter(log, type, res.groupedFilters[type], maxLength);
|
|
157
|
-
});
|
|
158
|
-
var setFilter = configuredFilter(res.validFilters, 'bySet');
|
|
159
|
-
// Clean all filters if set filter is present
|
|
160
|
-
if (setFilter) {
|
|
161
|
-
if (configuredFilter(res.validFilters, 'byName') || configuredFilter(res.validFilters, 'byPrefix'))
|
|
162
|
-
log.error(ERROR_SETS_FILTER_EXCLUSIVE);
|
|
163
|
-
objectAssign(res.groupedFilters, { byName: [], byPrefix: [] });
|
|
164
|
-
}
|
|
165
|
-
// build query string
|
|
166
|
-
res.queryString = queryStringBuilder(res.groupedFilters);
|
|
167
|
-
log.debug(SETTINGS_SPLITS_FILTER, [res.queryString]);
|
|
168
|
-
return res;
|
|
169
|
-
}
|
|
170
|
-
export function validateFlagSets(log, method, flagSets, flagSetsInConfig) {
|
|
171
|
-
var sets = validateSplits(log, flagSets, method, 'flag sets', 'flag set');
|
|
172
|
-
var toReturn = sets ? sanitizeFlagSets(log, sets, method) : [];
|
|
173
|
-
if (flagSetsInConfig.length > 0) {
|
|
174
|
-
toReturn = toReturn.filter(function (flagSet) {
|
|
175
|
-
if (flagSetsInConfig.indexOf(flagSet) > -1) {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
log.warn(WARN_FLAGSET_NOT_CONFIGURED, [method, flagSet]);
|
|
179
|
-
return false;
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
return toReturn.length ? toReturn : false;
|
|
183
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { InMemoryStorageCSFactory } from '../../../storages/inMemory/InMemoryStorageCS';
|
|
2
|
-
import { ERROR_STORAGE_INVALID } from '../../../logger/constants';
|
|
3
|
-
import { LOCALHOST_MODE, STANDALONE_MODE, STORAGE_PLUGGABLE, STORAGE_LOCALSTORAGE, STORAGE_MEMORY } from '../../../utils/constants';
|
|
4
|
-
export function __InLocalStorageMockFactory(params) {
|
|
5
|
-
var result = InMemoryStorageCSFactory(params);
|
|
6
|
-
result.validateCache = function () { return Promise.resolve(true); }; // to emit SDK_READY_FROM_CACHE
|
|
7
|
-
return result;
|
|
8
|
-
}
|
|
9
|
-
__InLocalStorageMockFactory.type = STORAGE_MEMORY;
|
|
10
|
-
/**
|
|
11
|
-
* This function validates `settings.storage` object
|
|
12
|
-
*
|
|
13
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
14
|
-
*
|
|
15
|
-
* @returns valid storage factory. Default to `InMemoryStorageCSFactory` if the provided storage is invalid or not compatible with the sdk mode if mode is standalone or localhost
|
|
16
|
-
*
|
|
17
|
-
* @throws error if mode is consumer and the provided storage is not compatible
|
|
18
|
-
*/
|
|
19
|
-
export function validateStorageCS(settings) {
|
|
20
|
-
var _a = settings.storage, storage = _a === void 0 ? InMemoryStorageCSFactory : _a, log = settings.log, mode = settings.mode;
|
|
21
|
-
// If an invalid storage is provided, fallback into MEMORY
|
|
22
|
-
if (typeof storage !== 'function' || [STORAGE_MEMORY, STORAGE_LOCALSTORAGE, STORAGE_PLUGGABLE].indexOf(storage.type) === -1) {
|
|
23
|
-
storage = InMemoryStorageCSFactory;
|
|
24
|
-
log.error(ERROR_STORAGE_INVALID);
|
|
25
|
-
}
|
|
26
|
-
// In localhost mode with InLocalStorage, fallback to a mock InLocalStorage to emit SDK_READY_FROM_CACHE
|
|
27
|
-
if (mode === LOCALHOST_MODE && storage.type === STORAGE_LOCALSTORAGE) {
|
|
28
|
-
return __InLocalStorageMockFactory;
|
|
29
|
-
}
|
|
30
|
-
if ([LOCALHOST_MODE, STANDALONE_MODE].indexOf(mode) === -1) {
|
|
31
|
-
// Consumer modes require an async storage
|
|
32
|
-
if (storage.type !== STORAGE_PLUGGABLE)
|
|
33
|
-
throw new Error('A PluggableStorage instance is required on consumer mode');
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// Standalone and localhost modes require a sync storage
|
|
37
|
-
if (storage.type === STORAGE_PLUGGABLE) {
|
|
38
|
-
storage = InMemoryStorageCSFactory;
|
|
39
|
-
log.error(ERROR_STORAGE_INVALID, [' It requires consumer mode.']);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// return default InMemory storage if provided one is not valid
|
|
43
|
-
return storage;
|
|
44
|
-
}
|