@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,16 +0,0 @@
|
|
|
1
|
-
import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../logger/types';
|
|
3
|
-
import SplitIO from '../../../types/splitio';
|
|
4
|
-
import { CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN } from '../constants';
|
|
5
|
-
import { stringToUpperCase } from '../lang';
|
|
6
|
-
|
|
7
|
-
const userConsentValues = [CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN];
|
|
8
|
-
|
|
9
|
-
export function validateConsent({ userConsent, log }: { userConsent?: any, log: ILogger }): SplitIO.ConsentStatus {
|
|
10
|
-
userConsent = stringToUpperCase(userConsent);
|
|
11
|
-
|
|
12
|
-
if (userConsentValues.indexOf(userConsent) > -1) return userConsent;
|
|
13
|
-
|
|
14
|
-
log.error(ERROR_INVALID_CONFIG_PARAM, ['userConsent', userConsentValues, CONSENT_GRANTED]);
|
|
15
|
-
return CONSENT_GRANTED;
|
|
16
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../logger/types';
|
|
3
|
-
import SplitIO from '../../../types/splitio';
|
|
4
|
-
import { DEBUG, OPTIMIZED, NONE } from '../constants';
|
|
5
|
-
import { stringToUpperCase } from '../lang';
|
|
6
|
-
|
|
7
|
-
export function validImpressionsMode(log: ILogger, impressionsMode: any): SplitIO.ImpressionsMode {
|
|
8
|
-
impressionsMode = stringToUpperCase(impressionsMode);
|
|
9
|
-
|
|
10
|
-
if ([DEBUG, OPTIMIZED, NONE].indexOf(impressionsMode) > -1) return impressionsMode;
|
|
11
|
-
|
|
12
|
-
log.error(ERROR_INVALID_CONFIG_PARAM, ['impressionsMode', [DEBUG, OPTIMIZED, NONE], OPTIMIZED]);
|
|
13
|
-
return OPTIMIZED;
|
|
14
|
-
}
|
|
@@ -1,207 +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 { ISettingsValidationParams } from './types';
|
|
7
|
-
import { ISettings } from '../../types';
|
|
8
|
-
import { validateKey } from '../inputValidation/key';
|
|
9
|
-
import { ERROR_MIN_CONFIG_PARAM, LOG_PREFIX_CLIENT_INSTANTIATION } from '../../logger/constants';
|
|
10
|
-
|
|
11
|
-
// Exported for telemetry
|
|
12
|
-
export const base = {
|
|
13
|
-
// Define which kind of object you want to retrieve from SplitFactory
|
|
14
|
-
mode: STANDALONE_MODE,
|
|
15
|
-
|
|
16
|
-
core: {
|
|
17
|
-
// API token (tight to an environment)
|
|
18
|
-
authorizationKey: undefined,
|
|
19
|
-
// key used in your system (only required for browser version)
|
|
20
|
-
key: undefined,
|
|
21
|
-
// toggle impressions tracking of labels
|
|
22
|
-
labelsEnabled: true,
|
|
23
|
-
// toggle sendind (true) or not sending (false) IP and Host Name with impressions, events, and telemetries requests (only used on nodejs version)
|
|
24
|
-
IPAddressesEnabled: undefined
|
|
25
|
-
},
|
|
26
|
-
|
|
27
|
-
scheduler: {
|
|
28
|
-
// fetch feature updates each 60 sec
|
|
29
|
-
featuresRefreshRate: 60,
|
|
30
|
-
// fetch segments updates each 60 sec
|
|
31
|
-
segmentsRefreshRate: 60,
|
|
32
|
-
// publish telemetry stats each 3600 secs (1 hour)
|
|
33
|
-
telemetryRefreshRate: 3600,
|
|
34
|
-
// publish evaluations each 300 sec (default value for OPTIMIZED impressions mode)
|
|
35
|
-
impressionsRefreshRate: 300,
|
|
36
|
-
// fetch offline changes each 15 sec
|
|
37
|
-
offlineRefreshRate: 15,
|
|
38
|
-
// publish events every 60 seconds after the first flush
|
|
39
|
-
eventsPushRate: 60,
|
|
40
|
-
// how many events will be queued before flushing
|
|
41
|
-
eventsQueueSize: 500,
|
|
42
|
-
// how many impressions will be queued before flushing
|
|
43
|
-
impressionsQueueSize: 30000,
|
|
44
|
-
// backoff base seconds to wait before re attempting to connect to push notifications
|
|
45
|
-
pushRetryBackoffBase: 1,
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
urls: {
|
|
49
|
-
// CDN having all the information for your environment
|
|
50
|
-
sdk: 'https://sdk.split.io/api',
|
|
51
|
-
// SDK event and impression endpoints
|
|
52
|
-
events: 'https://events.split.io/api',
|
|
53
|
-
// SDK Auth Server
|
|
54
|
-
auth: 'https://auth.split.io/api',
|
|
55
|
-
// Streaming Server
|
|
56
|
-
streaming: 'https://streaming.split.io',
|
|
57
|
-
// Telemetry Server
|
|
58
|
-
telemetry: 'https://telemetry.split.io/api',
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
// Defines which kind of storage we should instantiate.
|
|
62
|
-
storage: undefined,
|
|
63
|
-
|
|
64
|
-
// Defines if the logs are enabled, SDK wide.
|
|
65
|
-
debug: undefined,
|
|
66
|
-
|
|
67
|
-
// Defines the impression listener.
|
|
68
|
-
impressionListener: undefined,
|
|
69
|
-
|
|
70
|
-
// Instance version.
|
|
71
|
-
version: undefined,
|
|
72
|
-
|
|
73
|
-
// List of integrations.
|
|
74
|
-
integrations: undefined,
|
|
75
|
-
|
|
76
|
-
// toggle using (true) or not using (false) Server-Side Events for synchronizing storage
|
|
77
|
-
streamingEnabled: true,
|
|
78
|
-
|
|
79
|
-
sync: {
|
|
80
|
-
splitFilters: undefined,
|
|
81
|
-
// impressions collection mode
|
|
82
|
-
impressionsMode: OPTIMIZED,
|
|
83
|
-
enabled: true,
|
|
84
|
-
flagSpecVersion: FLAG_SPEC_VERSION
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
// Logger
|
|
88
|
-
log: undefined
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
function fromSecondsToMillis(n: number) {
|
|
92
|
-
return Math.round(n * 1000);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Validates the given config and use it to build a settings object.
|
|
97
|
-
* NOTE: it doesn't validate the SDK Key. Call `validateApiKey` or `validateAndTrackApiKey` for that after settings validation.
|
|
98
|
-
*
|
|
99
|
-
* @param config - user defined configuration
|
|
100
|
-
* @param validationParams - defaults and fields validators used to validate and creates a settings object from a given config
|
|
101
|
-
*/
|
|
102
|
-
export function settingsValidation(config: unknown, validationParams: ISettingsValidationParams) {
|
|
103
|
-
|
|
104
|
-
const { defaults, runtime, storage, integrations, logger, consent, flagSpec } = validationParams;
|
|
105
|
-
|
|
106
|
-
// creates a settings object merging base, defaults and config objects.
|
|
107
|
-
const withDefaults = merge({}, base, defaults, config) as ISettings;
|
|
108
|
-
// Keeps reference to the `features` property
|
|
109
|
-
withDefaults.features = get(config, 'features');
|
|
110
|
-
|
|
111
|
-
// ensure a valid logger.
|
|
112
|
-
// First thing to validate, since other validators might use the logger.
|
|
113
|
-
const log = logger(withDefaults); // @ts-ignore, modify readonly prop
|
|
114
|
-
withDefaults.log = log;
|
|
115
|
-
|
|
116
|
-
// ensure a valid impressionsMode
|
|
117
|
-
const sync = withDefaults.sync;
|
|
118
|
-
sync.impressionsMode = validImpressionsMode(log, sync.impressionsMode);
|
|
119
|
-
|
|
120
|
-
function validateMinValue(paramName: string, actualValue: number, minValue: number) {
|
|
121
|
-
if (actualValue >= minValue) return actualValue;
|
|
122
|
-
// actualValue is not a number or is lower than minValue
|
|
123
|
-
log.error(ERROR_MIN_CONFIG_PARAM, [paramName, minValue]);
|
|
124
|
-
return minValue;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Scheduler periods
|
|
128
|
-
const { scheduler, startup } = withDefaults;
|
|
129
|
-
scheduler.featuresRefreshRate = fromSecondsToMillis(scheduler.featuresRefreshRate);
|
|
130
|
-
scheduler.segmentsRefreshRate = fromSecondsToMillis(scheduler.segmentsRefreshRate);
|
|
131
|
-
scheduler.offlineRefreshRate = fromSecondsToMillis(scheduler.offlineRefreshRate);
|
|
132
|
-
scheduler.eventsPushRate = fromSecondsToMillis(scheduler.eventsPushRate);
|
|
133
|
-
scheduler.telemetryRefreshRate = fromSecondsToMillis(validateMinValue('telemetryRefreshRate', scheduler.telemetryRefreshRate, 60));
|
|
134
|
-
|
|
135
|
-
// Default impressionsRefreshRate for DEBUG mode is 60 secs
|
|
136
|
-
if (get(config, 'scheduler.impressionsRefreshRate') === undefined && sync.impressionsMode === DEBUG) scheduler.impressionsRefreshRate = 60;
|
|
137
|
-
scheduler.impressionsRefreshRate = fromSecondsToMillis(scheduler.impressionsRefreshRate);
|
|
138
|
-
|
|
139
|
-
// Log deprecation for old telemetry param
|
|
140
|
-
if (scheduler.metricsRefreshRate) log.warn('`metricsRefreshRate` will be deprecated soon. For configuring telemetry rates, update `telemetryRefreshRate` value in configs');
|
|
141
|
-
|
|
142
|
-
// Startup periods
|
|
143
|
-
startup.requestTimeoutBeforeReady = fromSecondsToMillis(startup.requestTimeoutBeforeReady);
|
|
144
|
-
startup.readyTimeout = fromSecondsToMillis(startup.readyTimeout);
|
|
145
|
-
startup.eventsFirstPushWindow = fromSecondsToMillis(startup.eventsFirstPushWindow);
|
|
146
|
-
|
|
147
|
-
// ensure a valid SDK mode
|
|
148
|
-
// @ts-ignore, modify readonly prop
|
|
149
|
-
withDefaults.mode = validateMode(withDefaults.core.authorizationKey, withDefaults.mode);
|
|
150
|
-
|
|
151
|
-
// ensure a valid Storage based on mode defined.
|
|
152
|
-
// @ts-ignore, modify readonly prop
|
|
153
|
-
if (storage) withDefaults.storage = storage(withDefaults);
|
|
154
|
-
|
|
155
|
-
// Validate key and TT (for client-side)
|
|
156
|
-
const maybeKey = withDefaults.core.key;
|
|
157
|
-
if (validationParams.acceptKey) {
|
|
158
|
-
// Although `key` is required in client-side, it can be omitted in LOCALHOST mode. In that case, the value `localhost_key` is used.
|
|
159
|
-
if (withDefaults.mode === LOCALHOST_MODE && maybeKey === undefined) {
|
|
160
|
-
withDefaults.core.key = 'localhost_key';
|
|
161
|
-
} else {
|
|
162
|
-
// Keeping same behavior than JS SDK: if settings key or TT are invalid,
|
|
163
|
-
// `false` value is used as bound key/TT of the default client, which leads to some issues.
|
|
164
|
-
// @ts-ignore, @TODO handle invalid keys as a non-recoverable error?
|
|
165
|
-
withDefaults.core.key = validateKey(log, maybeKey, LOG_PREFIX_CLIENT_INSTANTIATION);
|
|
166
|
-
}
|
|
167
|
-
} else {
|
|
168
|
-
// On server-side, key is undefined and used to distinguish from client-side
|
|
169
|
-
if (maybeKey !== undefined) log.warn('Provided `key` is ignored in server-side SDK.'); // @ts-ignore
|
|
170
|
-
withDefaults.core.key = undefined;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Current ip/hostname information
|
|
174
|
-
// @ts-ignore, modify readonly prop
|
|
175
|
-
withDefaults.runtime = runtime(withDefaults);
|
|
176
|
-
|
|
177
|
-
// ensure a valid list of integrations.
|
|
178
|
-
// `integrations` returns an array of valid integration items.
|
|
179
|
-
// @ts-ignore, modify readonly prop
|
|
180
|
-
if (integrations) withDefaults.integrations = integrations(withDefaults);
|
|
181
|
-
|
|
182
|
-
// validate push options
|
|
183
|
-
if (withDefaults.streamingEnabled !== false) { // @ts-ignore, modify readonly prop
|
|
184
|
-
withDefaults.streamingEnabled = true;
|
|
185
|
-
// Backoff bases.
|
|
186
|
-
// We are not checking if bases are positive numbers. Thus, we might be re-authenticating immediately (`setTimeout` with NaN or negative number)
|
|
187
|
-
scheduler.pushRetryBackoffBase = fromSecondsToMillis(scheduler.pushRetryBackoffBase);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// validate sync enabled
|
|
191
|
-
if (sync.enabled !== false) {
|
|
192
|
-
sync.enabled = true;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// validate the `splitFilters` settings and parse splits query
|
|
196
|
-
const splitFiltersValidation = validateSplitFilters(log, sync.splitFilters, withDefaults.mode);
|
|
197
|
-
sync.splitFilters = splitFiltersValidation.validFilters;
|
|
198
|
-
sync.__splitFiltersValidation = splitFiltersValidation;
|
|
199
|
-
|
|
200
|
-
// ensure a valid flag spec version
|
|
201
|
-
sync.flagSpecVersion = flagSpec ? flagSpec(withDefaults) : FLAG_SPEC_VERSION;
|
|
202
|
-
// ensure a valid user consent value
|
|
203
|
-
// @ts-ignore, modify readonly prop
|
|
204
|
-
withDefaults.userConsent = consent ? consent(withDefaults) : undefined;
|
|
205
|
-
|
|
206
|
-
return withDefaults;
|
|
207
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { WARN_INTEGRATION_INVALID } from '../../../logger/constants';
|
|
2
|
-
import { ILogger } from '../../../logger/types';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* This function validates `settings.integrations` object
|
|
6
|
-
*
|
|
7
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
8
|
-
* @param integrationValidator - filter used to remove invalid integration items
|
|
9
|
-
* @param extraWarning - optional string used to better describe why an item might be invalid
|
|
10
|
-
*
|
|
11
|
-
* @returns array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
|
|
12
|
-
*/
|
|
13
|
-
export function validateIntegrations(settings: { log: ILogger, integrations?: any }, integrationValidator: (integrationItem: any) => boolean, extraWarning?: string) {
|
|
14
|
-
const { integrations, log } = settings;
|
|
15
|
-
|
|
16
|
-
// If integrations is not an array or an empty array, we return an empty array (no integrations).
|
|
17
|
-
if (!Array.isArray(integrations) || integrations.length === 0) return [];
|
|
18
|
-
|
|
19
|
-
// We remove invalid integration items
|
|
20
|
-
const validIntegrations = integrations.filter(integrationValidator);
|
|
21
|
-
|
|
22
|
-
// Log a warning if at least one item is invalid
|
|
23
|
-
const invalids = integrations.length - validIntegrations.length;
|
|
24
|
-
if (invalids) log.warn(WARN_INTEGRATION_INVALID, [invalids, extraWarning || '']);
|
|
25
|
-
|
|
26
|
-
return validIntegrations;
|
|
27
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { validateIntegrations } from './common';
|
|
2
|
-
import { isString } from '../../lang';
|
|
3
|
-
import { ILogger } from '../../../logger/types';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* This function validates `settings.integrations` object that consists of a list of configuration items, used by the isomorphic JS SDK.
|
|
7
|
-
*
|
|
8
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
9
|
-
* @param validIntegrationTypes - list of integration types to filter from `settings.integrations`
|
|
10
|
-
*
|
|
11
|
-
* @returns array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
|
|
12
|
-
*/
|
|
13
|
-
export function validateConfigurableIntegrations(settings: { log: ILogger, integrations?: any }, validIntegrationTypes: string[] = []) {
|
|
14
|
-
|
|
15
|
-
return validateIntegrations(
|
|
16
|
-
settings,
|
|
17
|
-
integration => integration && isString(integration.type) && validIntegrationTypes.indexOf(integration.type) > -1,
|
|
18
|
-
'Integration items must have a valid "type" value'
|
|
19
|
-
);
|
|
20
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ISettings } from '../../../types';
|
|
2
|
-
import { validateIntegrations } from './common';
|
|
3
|
-
import { ILogger } from '../../../logger/types';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* This function validates `settings.integrations` object that consists of a list of pluggable integration factories.
|
|
7
|
-
*
|
|
8
|
-
* @param settings - config object provided by the user to initialize the sdk
|
|
9
|
-
*
|
|
10
|
-
* @returns array of valid integration factories. The array might be empty if `settings` object does not have valid integrations.
|
|
11
|
-
*/
|
|
12
|
-
export function validatePluggableIntegrations(settings: { log: ILogger, integrations?: any }): ISettings['integrations'] {
|
|
13
|
-
|
|
14
|
-
return validateIntegrations(
|
|
15
|
-
settings,
|
|
16
|
-
integration => typeof integration === 'function',
|
|
17
|
-
'Integration items must be functions that initialize the integrations'
|
|
18
|
-
);
|
|
19
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { isLogLevelString, Logger, LogLevels } from '../../../logger';
|
|
2
|
-
import { ILogger } from '../../../logger/types';
|
|
3
|
-
import { isLocalStorageAvailable } from '../../env/isLocalStorageAvailable';
|
|
4
|
-
import { isNode } from '../../env/isNode';
|
|
5
|
-
import { codesDebug } from '../../../logger/messages/debug';
|
|
6
|
-
import { getLogLevel } from './commons';
|
|
7
|
-
import SplitIO from '../../../../types/splitio';
|
|
8
|
-
|
|
9
|
-
const allCodes = new Map(codesDebug);
|
|
10
|
-
|
|
11
|
-
// @TODO set default debug setting instead of initialLogLevel when integrating in JS and Node packages
|
|
12
|
-
const LS_KEY = 'splitio_debug';
|
|
13
|
-
const ENV_VAR_KEY = 'SPLITIO_DEBUG';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Logger initial debug level, that is disabled ('NONE') by default.
|
|
17
|
-
* Acceptable values are: 'DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'.
|
|
18
|
-
* Other acceptable values are 'on', 'enable' and 'enabled', which are equivalent to 'DEBUG'.
|
|
19
|
-
* Any other string value is equivalent to disable.
|
|
20
|
-
*/
|
|
21
|
-
const initialState = String(
|
|
22
|
-
// eslint-disable-next-line no-undef
|
|
23
|
-
isNode ? process.env[ENV_VAR_KEY] : isLocalStorageAvailable() ? localStorage.getItem(LS_KEY) : ''
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// By default it starts disabled.
|
|
28
|
-
let initialLogLevel = LogLevels.NONE;
|
|
29
|
-
|
|
30
|
-
// Kept to avoid a breaking change ('on', 'enable' and 'enabled' are equivalent)
|
|
31
|
-
if (/^(enabled?|on)/i.test(initialState)) {
|
|
32
|
-
initialLogLevel = LogLevels.DEBUG;
|
|
33
|
-
} else if (isLogLevelString(initialState)) {
|
|
34
|
-
initialLogLevel = initialState;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Validates the `debug` property at config and use it to set the log level.
|
|
39
|
-
*
|
|
40
|
-
* @param settings - user config object, with an optional `debug` property of type boolean or string log level.
|
|
41
|
-
* @returns a logger instance with the log level at `settings.debug`. If `settings.debug` is invalid or not provided, `initialLogLevel` is used.
|
|
42
|
-
*/
|
|
43
|
-
export function validateLogger(settings: { debug: unknown }): ILogger {
|
|
44
|
-
const { debug } = settings;
|
|
45
|
-
|
|
46
|
-
const logLevel: SplitIO.LogLevel | undefined = debug !== undefined ? getLogLevel(debug) : initialLogLevel;
|
|
47
|
-
|
|
48
|
-
const log = new Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
|
|
49
|
-
|
|
50
|
-
// @ts-ignore // if logLevel is undefined at this point, it means that settings `debug` value is invalid
|
|
51
|
-
if (!logLevel) log._log(LogLevels.ERROR, 'Invalid Log Level - No changes to the logs will be applied.');
|
|
52
|
-
|
|
53
|
-
return log;
|
|
54
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { LogLevels, isLogLevelString } from '../../../logger';
|
|
3
|
-
import SplitIO from '../../../../types/splitio';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Returns the LogLevel for the given debugValue or undefined if it is invalid,
|
|
7
|
-
* i.e., if the debugValue is not a boolean or LogLevel string.
|
|
8
|
-
*
|
|
9
|
-
* @param debugValue - debug value at config
|
|
10
|
-
* @returns LogLevel of the given debugValue or undefined if the provided value is invalid
|
|
11
|
-
*/
|
|
12
|
-
export function getLogLevel(debugValue: unknown): SplitIO.LogLevel | undefined {
|
|
13
|
-
if (typeof debugValue === 'boolean') {
|
|
14
|
-
if (debugValue) {
|
|
15
|
-
return LogLevels.DEBUG;
|
|
16
|
-
} else {
|
|
17
|
-
return LogLevels.NONE;
|
|
18
|
-
}
|
|
19
|
-
} else if (typeof debugValue === 'string' && isLogLevelString(debugValue)) {
|
|
20
|
-
return debugValue;
|
|
21
|
-
} else {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Logger, LogLevels } from '../../../logger';
|
|
2
|
-
import { ILogger } from '../../../logger/types';
|
|
3
|
-
import SplitIO from '../../../../types/splitio';
|
|
4
|
-
import { getLogLevel } from './commons';
|
|
5
|
-
|
|
6
|
-
function isLogger(log: any): log is ILogger {
|
|
7
|
-
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';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// By default it starts disabled.
|
|
11
|
-
let initialLogLevel = LogLevels.NONE;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Validates the `debug` property at config and use it to set the logger.
|
|
15
|
-
*
|
|
16
|
-
* @param settings - user config object, with an optional `debug` property of type boolean, string log level or a Logger object.
|
|
17
|
-
* @returns a logger instance, that might be: the provided logger at `settings.debug`, or one with the given `debug` log level,
|
|
18
|
-
* or one with NONE log level if `debug` is not defined or invalid.
|
|
19
|
-
*/
|
|
20
|
-
export function validateLogger(settings: { debug: unknown }): ILogger {
|
|
21
|
-
const { debug } = settings;
|
|
22
|
-
let logLevel: SplitIO.LogLevel | undefined = initialLogLevel;
|
|
23
|
-
|
|
24
|
-
if (debug !== undefined) {
|
|
25
|
-
if (isLogger(debug)) return debug;
|
|
26
|
-
logLevel = getLogLevel(settings.debug);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const log = new Logger({ logLevel: logLevel || initialLogLevel });
|
|
30
|
-
|
|
31
|
-
// @ts-ignore // `debug` value is invalid if logLevel is undefined at this point
|
|
32
|
-
if (!logLevel) log._log(LogLevels.ERROR, 'Invalid `debug` value at config. Logs will be disabled.');
|
|
33
|
-
|
|
34
|
-
return log;
|
|
35
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { LOCALHOST_MODE, STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE, CONSUMER_PARTIAL_MODE } from '../constants';
|
|
2
|
-
|
|
3
|
-
export function validateMode(key: string, mode: string) {
|
|
4
|
-
// Leaving the comparison as is, in case we change the mode name but not the setting.
|
|
5
|
-
if (key === 'localhost') return LOCALHOST_MODE;
|
|
6
|
-
|
|
7
|
-
if ([STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE, CONSUMER_PARTIAL_MODE].indexOf(mode) === -1) throw Error('Invalid mode provided');
|
|
8
|
-
|
|
9
|
-
return mode;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Storage is async if mode is consumer or partial consumer
|
|
14
|
-
*/
|
|
15
|
-
export function isConsumerMode(mode: string) {
|
|
16
|
-
return CONSUMER_MODE === mode || CONSUMER_PARTIAL_MODE === mode;
|
|
17
|
-
}
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { validateSplits } from '../inputValidation/splits';
|
|
2
|
-
import { ISplitFiltersValidation } from '../../dtos/types';
|
|
3
|
-
import SplitIO from '../../../types/splitio';
|
|
4
|
-
import { ILogger } from '../../logger/types';
|
|
5
|
-
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';
|
|
6
|
-
import { objectAssign } from '../lang/objectAssign';
|
|
7
|
-
import { find, uniq } from '../lang';
|
|
8
|
-
import { isConsumerMode } from './mode';
|
|
9
|
-
|
|
10
|
-
// Split filters metadata.
|
|
11
|
-
// Ordered according to their precedency when forming the filter query string: `&names=<values>&prefixes=<values>`
|
|
12
|
-
const FILTERS_METADATA = [
|
|
13
|
-
{
|
|
14
|
-
type: 'bySet' as SplitIO.SplitFilterType,
|
|
15
|
-
maxLength: 50,
|
|
16
|
-
queryParam: 'sets='
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
type: 'byName' as SplitIO.SplitFilterType,
|
|
20
|
-
maxLength: 400,
|
|
21
|
-
queryParam: 'names='
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
type: 'byPrefix' as SplitIO.SplitFilterType,
|
|
25
|
-
maxLength: 50,
|
|
26
|
-
queryParam: 'prefixes='
|
|
27
|
-
}
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
const VALID_FLAGSET_REGEX = /^[a-z0-9][_a-z0-9]{0,49}$/;
|
|
31
|
-
const CAPITAL_LETTERS_REGEX = /[A-Z]/;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Validates that the given value is a valid filter type
|
|
35
|
-
*/
|
|
36
|
-
function validateFilterType(maybeFilterType: any): maybeFilterType is SplitIO.SplitFilterType {
|
|
37
|
-
return FILTERS_METADATA.some(filterMetadata => filterMetadata.type === maybeFilterType);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Validate, deduplicate and sort a given list of filter values.
|
|
42
|
-
*
|
|
43
|
-
* @param type - filter type string used for log messages
|
|
44
|
-
* @param values - list of values to validate, deduplicate and sort
|
|
45
|
-
* @param maxLength - max length allowed for the list of values
|
|
46
|
-
* @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.
|
|
47
|
-
*
|
|
48
|
-
* @throws Error if the sanitized list exceeds the length indicated by `maxLength`
|
|
49
|
-
*/
|
|
50
|
-
function validateSplitFilter(log: ILogger, type: SplitIO.SplitFilterType, values: string[], maxLength: number) {
|
|
51
|
-
// validate and remove invalid and duplicated values
|
|
52
|
-
let result = validateSplits(log, values, LOG_PREFIX_SETTINGS, `${type} filter`, `${type} filter value`);
|
|
53
|
-
|
|
54
|
-
if (result) {
|
|
55
|
-
|
|
56
|
-
if (type === 'bySet') {
|
|
57
|
-
result = sanitizeFlagSets(log, result, LOG_PREFIX_SETTINGS);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// check max length
|
|
61
|
-
if (result.length > maxLength) 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.`);
|
|
62
|
-
|
|
63
|
-
// sort values
|
|
64
|
-
result.sort();
|
|
65
|
-
}
|
|
66
|
-
return result || []; // returns empty array if `result` is `false`
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Returns a string representing the URL encoded query component of /splitChanges URL.
|
|
71
|
-
*
|
|
72
|
-
* @param groupedFilters - object of filters. Each filter must be a list of valid, unique and ordered string values.
|
|
73
|
-
* @returns null or string with the `split filter query` component of the URL.
|
|
74
|
-
*/
|
|
75
|
-
function queryStringBuilder(groupedFilters: Record<SplitIO.SplitFilterType, string[]>) {
|
|
76
|
-
const queryParams: string[] = [];
|
|
77
|
-
FILTERS_METADATA.forEach(({ type, queryParam }) => {
|
|
78
|
-
const filter = groupedFilters[type];
|
|
79
|
-
if (filter.length > 0) queryParams.push(queryParam + filter.map(value => encodeURIComponent(value)).join(','));
|
|
80
|
-
});
|
|
81
|
-
return queryParams.length > 0 ? '&' + queryParams.join('&') : null;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Sanitizes set names list taking into account:
|
|
86
|
-
* - It should be lowercase
|
|
87
|
-
* - Must adhere the following regular expression `/^[a-z0-9][_a-z0-9]{0,49}$/` that means
|
|
88
|
-
* - must start with a letter or number
|
|
89
|
-
* - Be in lowercase
|
|
90
|
-
* - Be alphanumeric
|
|
91
|
-
* - have a max length of 50 characters
|
|
92
|
-
*
|
|
93
|
-
* @returns sanitized list of set names
|
|
94
|
-
*/
|
|
95
|
-
function sanitizeFlagSets(log: ILogger, flagSets: string[], method: string) {
|
|
96
|
-
let sanitizedSets = flagSets
|
|
97
|
-
.map(flagSet => {
|
|
98
|
-
if (CAPITAL_LETTERS_REGEX.test(flagSet)) {
|
|
99
|
-
log.warn(WARN_LOWERCASE_FLAGSET, [method, flagSet]);
|
|
100
|
-
flagSet = flagSet.toLowerCase();
|
|
101
|
-
}
|
|
102
|
-
return flagSet;
|
|
103
|
-
})
|
|
104
|
-
.filter(flagSet => {
|
|
105
|
-
if (!VALID_FLAGSET_REGEX.test(flagSet)) {
|
|
106
|
-
log.warn(WARN_INVALID_FLAGSET, [method, flagSet, VALID_FLAGSET_REGEX, flagSet]);
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
if (typeof flagSet !== 'string') return false;
|
|
110
|
-
return true;
|
|
111
|
-
});
|
|
112
|
-
return uniq(sanitizedSets);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function configuredFilter(validFilters: SplitIO.SplitFilter[], filterType: SplitIO.SplitFilterType) {
|
|
116
|
-
return find(validFilters, (filter: SplitIO.SplitFilter) => filter.type === filterType && filter.values.length > 0);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Validates `splitFilters` configuration object and parses it into a query string for filtering splits on `/splitChanges` fetch.
|
|
121
|
-
*
|
|
122
|
-
* @param log - logger
|
|
123
|
-
* @param maybeSplitFilters - split filters configuration param provided by the user
|
|
124
|
-
* @param mode - settings mode
|
|
125
|
-
* @returns it returns an object with the following properties:
|
|
126
|
-
* - `validFilters`: the validated `splitFilters` configuration object defined by the user.
|
|
127
|
-
* - `queryString`: the parsed split filter query. it is null if all filters are invalid or all values in filters are invalid.
|
|
128
|
-
* - `groupedFilters`: list of values grouped by filter type.
|
|
129
|
-
*
|
|
130
|
-
* @throws Error if the some of the grouped list of values per filter exceeds the max allowed length
|
|
131
|
-
*/
|
|
132
|
-
export function validateSplitFilters(log: ILogger, maybeSplitFilters: any, mode: string): ISplitFiltersValidation {
|
|
133
|
-
// Validation result schema
|
|
134
|
-
const res = {
|
|
135
|
-
validFilters: [],
|
|
136
|
-
queryString: null,
|
|
137
|
-
groupedFilters: { bySet: [], byName: [], byPrefix: [] },
|
|
138
|
-
} as ISplitFiltersValidation;
|
|
139
|
-
|
|
140
|
-
// do nothing if `splitFilters` param is not a non-empty array or mode is not STANDALONE
|
|
141
|
-
if (!maybeSplitFilters) return res;
|
|
142
|
-
// Warn depending on the mode
|
|
143
|
-
if (isConsumerMode(mode)) {
|
|
144
|
-
log.warn(WARN_SPLITS_FILTER_IGNORED);
|
|
145
|
-
return res;
|
|
146
|
-
}
|
|
147
|
-
// Check collection type
|
|
148
|
-
if (!Array.isArray(maybeSplitFilters) || maybeSplitFilters.length === 0) {
|
|
149
|
-
log.warn(WARN_SPLITS_FILTER_EMPTY);
|
|
150
|
-
return res;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Validate filters and group their values by filter type inside `groupedFilters` object
|
|
154
|
-
res.validFilters = maybeSplitFilters.filter((filter, index) => {
|
|
155
|
-
if (filter && validateFilterType(filter.type) && Array.isArray(filter.values)) {
|
|
156
|
-
res.groupedFilters[filter.type as SplitIO.SplitFilterType] = res.groupedFilters[filter.type as SplitIO.SplitFilterType].concat(filter.values);
|
|
157
|
-
return true;
|
|
158
|
-
} else {
|
|
159
|
-
log.warn(WARN_SPLITS_FILTER_INVALID, [index]);
|
|
160
|
-
}
|
|
161
|
-
return false;
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
// By filter type, remove invalid and duplicated values and order them
|
|
165
|
-
FILTERS_METADATA.forEach(({ type, maxLength }) => {
|
|
166
|
-
if (res.groupedFilters[type].length > 0) res.groupedFilters[type] = validateSplitFilter(log, type, res.groupedFilters[type], maxLength);
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
const setFilter = configuredFilter(res.validFilters, 'bySet');
|
|
170
|
-
// Clean all filters if set filter is present
|
|
171
|
-
if (setFilter) {
|
|
172
|
-
if (configuredFilter(res.validFilters, 'byName') || configuredFilter(res.validFilters, 'byPrefix')) log.error(ERROR_SETS_FILTER_EXCLUSIVE);
|
|
173
|
-
objectAssign(res.groupedFilters, { byName: [], byPrefix: [] });
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// build query string
|
|
177
|
-
res.queryString = queryStringBuilder(res.groupedFilters);
|
|
178
|
-
log.debug(SETTINGS_SPLITS_FILTER, [res.queryString]);
|
|
179
|
-
|
|
180
|
-
return res;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export function validateFlagSets(log: ILogger, method: string, flagSets: string[], flagSetsInConfig: string[]): string[] | false {
|
|
184
|
-
const sets = validateSplits(log, flagSets, method, 'flag sets', 'flag set');
|
|
185
|
-
let toReturn = sets ? sanitizeFlagSets(log, sets, method) : [];
|
|
186
|
-
if (flagSetsInConfig.length > 0) {
|
|
187
|
-
toReturn = toReturn.filter(flagSet => {
|
|
188
|
-
if (flagSetsInConfig.indexOf(flagSet) > -1) {
|
|
189
|
-
return true;
|
|
190
|
-
}
|
|
191
|
-
log.warn(WARN_FLAGSET_NOT_CONFIGURED, [method, flagSet]);
|
|
192
|
-
return false;
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
return toReturn.length ? toReturn : false;
|
|
197
|
-
}
|