@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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import osFunction from 'os';
|
|
2
|
+
import { address } from '../../utils/ip';
|
|
3
|
+
import { UNKNOWN, NA, CONSUMER_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
|
|
4
|
+
export function validateRuntime(settings) {
|
|
5
|
+
var isIPAddressesEnabled = settings.core.IPAddressesEnabled === true;
|
|
6
|
+
var isConsumerMode = settings.mode === CONSUMER_MODE;
|
|
7
|
+
// If the values are not available, default to false (for standalone) or "unknown" (for consumer mode, to be used on Redis keys)
|
|
8
|
+
var ip = address() || (isConsumerMode ? UNKNOWN : false);
|
|
9
|
+
var hostname = osFunction.hostname() || (isConsumerMode ? UNKNOWN : false);
|
|
10
|
+
if (!isIPAddressesEnabled) { // If IPAddresses setting is not enabled, set as false (for standalone) or "NA" (for consumer mode, to be used on Redis keys)
|
|
11
|
+
ip = hostname = isConsumerMode ? NA : false;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
ip: ip,
|
|
15
|
+
hostname: hostname
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isLocalStorageAvailable } from '@splitsoftware/splitio-commons/esm/utils/env/isLocalStorageAvailable';
|
|
2
|
+
import { LOCALHOST_MODE, STORAGE_MEMORY } from '@splitsoftware/splitio-commons/esm/utils/constants';
|
|
3
|
+
var STORAGE_LOCALSTORAGE = 'LOCALSTORAGE';
|
|
4
|
+
export function validateStorage(settings) {
|
|
5
|
+
var log = settings.log, mode = settings.mode, _a = settings.storage, _b = _a === void 0 ? { type: STORAGE_MEMORY } : _a, type = _b.type, _c = _b.options, options = _c === void 0 ? {} : _c, prefix = _b.prefix, expirationDays = _b.expirationDays, clearOnInit = _b.clearOnInit;
|
|
6
|
+
var __originalType;
|
|
7
|
+
var fallbackToMemory = function () {
|
|
8
|
+
__originalType = type;
|
|
9
|
+
type = STORAGE_MEMORY;
|
|
10
|
+
};
|
|
11
|
+
// In localhost mode, fallback to Memory storage and track original type to emit SDK_READY_FROM_CACHE if corresponds.
|
|
12
|
+
// ATM, other mode settings (e.g., 'consumer') are ignored in client-side API, and so treated as standalone.
|
|
13
|
+
if (mode === LOCALHOST_MODE && type === STORAGE_LOCALSTORAGE) {
|
|
14
|
+
fallbackToMemory();
|
|
15
|
+
}
|
|
16
|
+
// If an invalid storage type is provided OR we want to use LOCALSTORAGE and
|
|
17
|
+
// it's not available, fallback into MEMORY
|
|
18
|
+
if (type !== STORAGE_MEMORY && type !== STORAGE_LOCALSTORAGE ||
|
|
19
|
+
type === STORAGE_LOCALSTORAGE && !isLocalStorageAvailable()) {
|
|
20
|
+
fallbackToMemory();
|
|
21
|
+
log.error('Invalid or unavailable storage. Fallback into MEMORY storage');
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
type: type,
|
|
25
|
+
options: options,
|
|
26
|
+
prefix: prefix,
|
|
27
|
+
expirationDays: expirationDays,
|
|
28
|
+
clearOnInit: clearOnInit,
|
|
29
|
+
__originalType: __originalType
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { LOCALHOST_MODE, STORAGE_MEMORY, STORAGE_REDIS, CONSUMER_MODE, STANDALONE_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
|
|
2
|
+
export function validateStorage(settings) {
|
|
3
|
+
var log = settings.log, mode = settings.mode, _a = settings.storage, _b = _a === void 0 ? { type: STORAGE_MEMORY } : _a, type = _b.type, _c = _b.options, options = _c === void 0 ? {} : _c, prefix = _b.prefix;
|
|
4
|
+
// We can have MEMORY, REDIS or an invalid storage type
|
|
5
|
+
switch (type) {
|
|
6
|
+
case STORAGE_REDIS: {
|
|
7
|
+
// If passing REDIS storage in localhost or standalone mode, we log an error and fallback to MEMORY storage
|
|
8
|
+
if (mode === STANDALONE_MODE || mode === LOCALHOST_MODE) {
|
|
9
|
+
log.error('The provided REDIS storage is invalid for this mode. It requires consumer mode. Fallback into default MEMORY storage.');
|
|
10
|
+
return {
|
|
11
|
+
type: STORAGE_MEMORY,
|
|
12
|
+
prefix: prefix
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
var host = options.host, port = options.port, db = options.db, pass = options.pass, url = options.url, tls = options.tls, connectionTimeout = options.connectionTimeout, operationTimeout = options.operationTimeout;
|
|
16
|
+
if (process.env.REDIS_HOST)
|
|
17
|
+
host = process.env.REDIS_HOST;
|
|
18
|
+
if (process.env.REDIS_PORT)
|
|
19
|
+
port = process.env.REDIS_PORT;
|
|
20
|
+
if (process.env.REDIS_DB)
|
|
21
|
+
db = process.env.REDIS_DB;
|
|
22
|
+
if (process.env.REDIS_PASS)
|
|
23
|
+
pass = process.env.REDIS_PASS;
|
|
24
|
+
if (process.env.REDIS_URL)
|
|
25
|
+
url = process.env.REDIS_URL;
|
|
26
|
+
var newOpts = {
|
|
27
|
+
connectionTimeout: connectionTimeout,
|
|
28
|
+
operationTimeout: operationTimeout
|
|
29
|
+
};
|
|
30
|
+
if (url) {
|
|
31
|
+
newOpts.url = url;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
newOpts.host = host;
|
|
35
|
+
newOpts.port = port;
|
|
36
|
+
newOpts.db = db;
|
|
37
|
+
newOpts.pass = pass;
|
|
38
|
+
}
|
|
39
|
+
if (tls) {
|
|
40
|
+
newOpts.tls = tls;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
type: type,
|
|
44
|
+
prefix: prefix,
|
|
45
|
+
options: newOpts
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// For now, we don't have modifiers or settings for MEMORY in Node.js
|
|
49
|
+
case STORAGE_MEMORY:
|
|
50
|
+
default: {
|
|
51
|
+
// If passing MEMORY storage in consumer mode, throw an error (no way to fallback to REDIS storage)
|
|
52
|
+
if (mode === CONSUMER_MODE)
|
|
53
|
+
throw new Error('A REDIS storage is required on consumer mode');
|
|
54
|
+
// If passing an invalid storage type, log an error
|
|
55
|
+
if (type !== STORAGE_MEMORY)
|
|
56
|
+
log.error("The provided '" + type + "' storage type is invalid. Fallback into default MEMORY storage.");
|
|
57
|
+
return {
|
|
58
|
+
type: STORAGE_MEMORY,
|
|
59
|
+
prefix: prefix
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { splitsParserFromFileFactory } from './splitsParserFromFile';
|
|
2
|
+
import { syncManagerOfflineFactory } from '@splitsoftware/splitio-commons/esm/sync/offline/syncManagerOffline';
|
|
3
|
+
// Singleton instance of the factory function for offline SyncManager from YAML file
|
|
4
|
+
// It uses Node.js APIs.
|
|
5
|
+
export var localhostFromFileFactory = syncManagerOfflineFactory(splitsParserFromFileFactory);
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import yaml from 'js-yaml';
|
|
4
|
+
import { isString, endsWith, find, forOwn, uniq, } from '@splitsoftware/splitio-commons/esm/utils/lang';
|
|
5
|
+
import { parseCondition } from '@splitsoftware/splitio-commons/esm/sync/offline/splitsParser/parseCondition';
|
|
6
|
+
var logPrefix = 'sync:offline:fetcher: ';
|
|
7
|
+
var DEFAULT_FILENAME = '.split';
|
|
8
|
+
function configFilesPath(configFilePath) {
|
|
9
|
+
if (configFilePath === DEFAULT_FILENAME || !isString(configFilePath)) {
|
|
10
|
+
var root = process.env.HOME;
|
|
11
|
+
// @TODO env var not documented in help center
|
|
12
|
+
if (process.env.SPLIT_CONFIG_ROOT)
|
|
13
|
+
root = process.env.SPLIT_CONFIG_ROOT;
|
|
14
|
+
if (!root)
|
|
15
|
+
throw new Error('Missing root of the feature flags mock file.');
|
|
16
|
+
configFilePath = path.join(root, DEFAULT_FILENAME);
|
|
17
|
+
}
|
|
18
|
+
// Validate the extensions
|
|
19
|
+
if (!(endsWith(configFilePath, '.yaml', true) || endsWith(configFilePath, '.yml', true) || endsWith(configFilePath, '.split', true)))
|
|
20
|
+
throw new Error("Invalid extension specified for feature flags mock file. Accepted extensions are \".yml\" and \".yaml\". Your specified file is " + configFilePath);
|
|
21
|
+
if (!fs.existsSync(configFilePath))
|
|
22
|
+
throw new Error("Feature flags mock file not found in " + configFilePath + " - Please review the file location.");
|
|
23
|
+
return configFilePath;
|
|
24
|
+
}
|
|
25
|
+
// This function is not pure nor meant to be. Here we apply modifications to cover
|
|
26
|
+
// for behavior that's ensured by the BE.
|
|
27
|
+
function arrangeConditions(mocksData) {
|
|
28
|
+
// Iterate through each feature flag data
|
|
29
|
+
forOwn(mocksData, function (data) {
|
|
30
|
+
var conditions = data.conditions;
|
|
31
|
+
// On the manager, as feature flag JSONs come with all treatments on the partitions prop,
|
|
32
|
+
// we'll add all the treatments to the first condition.
|
|
33
|
+
var firstRolloutCondition = find(conditions, function (cond) { return cond.conditionType === 'ROLLOUT'; });
|
|
34
|
+
// Malformed mocks may have
|
|
35
|
+
var treatments = uniq(data.treatments);
|
|
36
|
+
// If they're only specifying a whitelist we add the treatments there.
|
|
37
|
+
var allTreatmentsCondition = firstRolloutCondition ? firstRolloutCondition : conditions[0];
|
|
38
|
+
var fullyAllocatedTreatment = allTreatmentsCondition.partitions[0].treatment;
|
|
39
|
+
treatments.forEach(function (treatment) {
|
|
40
|
+
if (treatment !== fullyAllocatedTreatment) {
|
|
41
|
+
allTreatmentsCondition.partitions.push({
|
|
42
|
+
treatment: treatment,
|
|
43
|
+
size: 0
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
// Don't need these anymore
|
|
48
|
+
delete data.treatments;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export function splitsParserFromFileFactory() {
|
|
52
|
+
var previousMock = 'NO_MOCK_LOADED';
|
|
53
|
+
// Parse `.split` configuration file and return a map of feature flag objects
|
|
54
|
+
function readFeatureFlagConfigFile(log, filePath) {
|
|
55
|
+
var FEATURE_FLAG_POSITION = 0;
|
|
56
|
+
var TREATMENT_POSITION = 1;
|
|
57
|
+
var data;
|
|
58
|
+
try {
|
|
59
|
+
data = fs.readFileSync(filePath, 'utf-8');
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
log.error(e && e.message);
|
|
63
|
+
return {};
|
|
64
|
+
}
|
|
65
|
+
if (data === previousMock)
|
|
66
|
+
return false;
|
|
67
|
+
previousMock = data;
|
|
68
|
+
var featureFlagObjects = data.split(/\r?\n/).reduce(function (accum, line, index) {
|
|
69
|
+
var tuple = line.trim();
|
|
70
|
+
if (tuple === '' || tuple.charAt(0) === '#') {
|
|
71
|
+
log.debug(logPrefix + ("Ignoring empty line or comment at #" + index));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
tuple = tuple.split(/\s+/);
|
|
75
|
+
if (tuple.length !== 2) {
|
|
76
|
+
log.debug(logPrefix + ("Ignoring line since it does not have exactly two columns #" + index));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
var featureFlagName = tuple[FEATURE_FLAG_POSITION];
|
|
80
|
+
var condition = parseCondition({ treatment: tuple[TREATMENT_POSITION] });
|
|
81
|
+
accum[featureFlagName] = { conditions: [condition], configurations: {}, trafficTypeName: 'localhost' };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return accum;
|
|
85
|
+
}, {});
|
|
86
|
+
return featureFlagObjects;
|
|
87
|
+
}
|
|
88
|
+
// Parse `.yml` or `.yaml` configuration files and return a map of feature flag objects
|
|
89
|
+
function readYAMLConfigFile(log, filePath) {
|
|
90
|
+
var data = '';
|
|
91
|
+
var yamldoc = null;
|
|
92
|
+
try {
|
|
93
|
+
data = fs.readFileSync(filePath, 'utf8');
|
|
94
|
+
if (data === previousMock)
|
|
95
|
+
return false;
|
|
96
|
+
previousMock = data;
|
|
97
|
+
yamldoc = yaml.safeLoad(data);
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
log.error(e);
|
|
101
|
+
return {};
|
|
102
|
+
}
|
|
103
|
+
// Each entry will be mapped to a condition, but we'll also keep the configurations map.
|
|
104
|
+
var mocksData = (yamldoc).reduce(function (accum, featureFlagEntry) {
|
|
105
|
+
var featureFlagName = Object.keys(featureFlagEntry)[0];
|
|
106
|
+
if (!featureFlagName || !isString(featureFlagEntry[featureFlagName].treatment))
|
|
107
|
+
log.error(logPrefix + 'Ignoring entry on YAML since the format is incorrect.');
|
|
108
|
+
var mockData = featureFlagEntry[featureFlagName];
|
|
109
|
+
// "Template" for each feature flag accumulated data
|
|
110
|
+
if (!accum[featureFlagName]) {
|
|
111
|
+
accum[featureFlagName] = {
|
|
112
|
+
configurations: {}, conditions: [], treatments: [], trafficTypeName: 'localhost'
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Assign the config if there is one on the mock
|
|
116
|
+
if (mockData.config)
|
|
117
|
+
accum[featureFlagName].configurations[mockData.treatment] = mockData.config;
|
|
118
|
+
// Parse the condition from the entry.
|
|
119
|
+
var condition = parseCondition(mockData);
|
|
120
|
+
accum[featureFlagName].conditions[condition.conditionType === 'ROLLOUT' ? 'push' : 'unshift'](condition);
|
|
121
|
+
// Also keep track of the treatments, will be useful for manager functionality.
|
|
122
|
+
accum[featureFlagName].treatments.push(mockData.treatment);
|
|
123
|
+
return accum;
|
|
124
|
+
}, {});
|
|
125
|
+
arrangeConditions(mocksData);
|
|
126
|
+
return mocksData;
|
|
127
|
+
}
|
|
128
|
+
// Load the content of a configuration file into an Object
|
|
129
|
+
return function featureFlagsParserFromFile(_a) {
|
|
130
|
+
var features = _a.features, log = _a.log;
|
|
131
|
+
var filePath = configFilesPath(features);
|
|
132
|
+
var mockData;
|
|
133
|
+
// If we have a filePath, it means the extension is correct, choose the parser.
|
|
134
|
+
if (endsWith(filePath, '.split')) {
|
|
135
|
+
log.warn(logPrefix + '.split mocks will be deprecated soon in favor of YAML files, which provide more targeting power. Take a look in our documentation.');
|
|
136
|
+
mockData = readFeatureFlagConfigFile(log, filePath);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
mockData = readYAMLConfigFile(log, filePath);
|
|
140
|
+
}
|
|
141
|
+
return mockData;
|
|
142
|
+
};
|
|
143
|
+
}
|
package/esm/umd.js
ADDED
package/esm/utils/ip.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* eslint-disable no-redeclare */
|
|
2
|
+
/*
|
|
3
|
+
Trimmed version of "ip" package (https://www.npmjs.com/package/ip) that fixes an error when running in Node.js v18.
|
|
4
|
+
|
|
5
|
+
This software is licensed under the MIT License.
|
|
6
|
+
|
|
7
|
+
Copyright Fedor Indutny, 2012.
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
14
|
+
*/
|
|
15
|
+
import os from 'os';
|
|
16
|
+
function _resolveFamily(family) {
|
|
17
|
+
return typeof family === 'number' ? 'ipv' + family : family.toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
function _normalizeFamily(family) {
|
|
20
|
+
return family ? _resolveFamily(family) : 'ipv4';
|
|
21
|
+
}
|
|
22
|
+
function isPrivate(addr) {
|
|
23
|
+
return /^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i
|
|
24
|
+
.test(addr) ||
|
|
25
|
+
/^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) ||
|
|
26
|
+
/^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i
|
|
27
|
+
.test(addr) ||
|
|
28
|
+
/^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) ||
|
|
29
|
+
/^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) ||
|
|
30
|
+
/^f[cd][0-9a-f]{2}:/i.test(addr) ||
|
|
31
|
+
/^fe80:/i.test(addr) ||
|
|
32
|
+
/^::1$/.test(addr) ||
|
|
33
|
+
/^::$/.test(addr);
|
|
34
|
+
}
|
|
35
|
+
function isPublic(addr) {
|
|
36
|
+
return !isPrivate(addr);
|
|
37
|
+
}
|
|
38
|
+
function isLoopback(addr) {
|
|
39
|
+
return /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/
|
|
40
|
+
.test(addr) ||
|
|
41
|
+
/^fe80::1$/.test(addr) ||
|
|
42
|
+
/^::1$/.test(addr) ||
|
|
43
|
+
/^::$/.test(addr);
|
|
44
|
+
}
|
|
45
|
+
function loopback(family) {
|
|
46
|
+
//
|
|
47
|
+
// Default to `ipv4`
|
|
48
|
+
//
|
|
49
|
+
family = _normalizeFamily(family);
|
|
50
|
+
if (family !== 'ipv4' && family !== 'ipv6') {
|
|
51
|
+
throw new Error('family must be ipv4 or ipv6');
|
|
52
|
+
}
|
|
53
|
+
return family === 'ipv4' ? '127.0.0.1' : 'fe80::1';
|
|
54
|
+
}
|
|
55
|
+
//
|
|
56
|
+
// ### function address (name, family)
|
|
57
|
+
// #### @name {string|'public'|'private'} **Optional** Name or security
|
|
58
|
+
// of the network interface.
|
|
59
|
+
// #### @family {ipv4|ipv6} **Optional** IP family of the address (defaults
|
|
60
|
+
// to ipv4).
|
|
61
|
+
//
|
|
62
|
+
// Returns the address for the network interface on the current system with
|
|
63
|
+
// the specified `name`:
|
|
64
|
+
// * String: First `family` address of the interface.
|
|
65
|
+
// If not found see `undefined`.
|
|
66
|
+
// * 'public': the first public ip address of family.
|
|
67
|
+
// * 'private': the first private ip address of family.
|
|
68
|
+
// * undefined: First address with `ipv4` or loopback address `127.0.0.1`.
|
|
69
|
+
//
|
|
70
|
+
export function address(name, family) {
|
|
71
|
+
var interfaces = os.networkInterfaces();
|
|
72
|
+
var all;
|
|
73
|
+
//
|
|
74
|
+
// Default to `ipv4`
|
|
75
|
+
//
|
|
76
|
+
family = _normalizeFamily(family);
|
|
77
|
+
//
|
|
78
|
+
// If a specific network interface has been named,
|
|
79
|
+
// return the address.
|
|
80
|
+
//
|
|
81
|
+
if (name && name !== 'private' && name !== 'public') {
|
|
82
|
+
var res = interfaces[name].filter(function (details) {
|
|
83
|
+
var itemFamily = _resolveFamily(details.family);
|
|
84
|
+
return itemFamily === family;
|
|
85
|
+
});
|
|
86
|
+
if (res.length === 0)
|
|
87
|
+
return undefined;
|
|
88
|
+
return res[0].address;
|
|
89
|
+
}
|
|
90
|
+
var all = Object.keys(interfaces).map(function (nic) {
|
|
91
|
+
//
|
|
92
|
+
// Note: name will only be `public` or `private`
|
|
93
|
+
// when this is called.
|
|
94
|
+
//
|
|
95
|
+
var addresses = interfaces[nic].filter(function (details) {
|
|
96
|
+
details.family = _resolveFamily(details.family);
|
|
97
|
+
if (details.family !== family || isLoopback(details.address)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
else if (!name) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return name === 'public' ? isPrivate(details.address) :
|
|
104
|
+
isPublic(details.address);
|
|
105
|
+
});
|
|
106
|
+
return addresses.length ? addresses[0].address : undefined;
|
|
107
|
+
}).filter(Boolean);
|
|
108
|
+
return !all.length ? loopback(family) : all[0];
|
|
109
|
+
}
|
package/package.json
CHANGED
|
@@ -1,83 +1,124 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@splitsoftware/splitio-commons",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Split
|
|
5
|
-
"main": "cjs/index.js",
|
|
6
|
-
"module": "esm/index.js",
|
|
7
|
-
"types": "types",
|
|
3
|
+
"version": "11.5.0-rc.0",
|
|
4
|
+
"description": "Split SDK",
|
|
8
5
|
"files": [
|
|
9
6
|
"README.md",
|
|
10
7
|
"CONTRIBUTORS-GUIDE.md",
|
|
11
8
|
"LICENSE",
|
|
12
9
|
"CHANGES.txt",
|
|
13
10
|
"cjs",
|
|
11
|
+
"types",
|
|
14
12
|
"esm",
|
|
15
13
|
"src",
|
|
16
|
-
"
|
|
14
|
+
"client",
|
|
15
|
+
"server"
|
|
16
|
+
],
|
|
17
|
+
"repository": "splitio/javascript-client",
|
|
18
|
+
"homepage": "https://github.com/splitio/javascript-client#readme",
|
|
19
|
+
"bugs": "https://github.com/splitio/javascript-client/issues",
|
|
20
|
+
"license": "Apache-2.0",
|
|
21
|
+
"author": "Facundo Cabrera <facundo@split.io>",
|
|
22
|
+
"contributors": [
|
|
23
|
+
{
|
|
24
|
+
"name": "Nico Zelaya",
|
|
25
|
+
"email": "nicolas.zelaya@split.io",
|
|
26
|
+
"url": "https://github.com/NicoZelaya"
|
|
27
|
+
}
|
|
17
28
|
],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"check": "npm run check:lint && npm run check:types",
|
|
20
|
-
"check:lint": "eslint src types --ext .js,.ts",
|
|
21
|
-
"check:types": "tsc --noEmit",
|
|
22
|
-
"build": "npm run build:cjs && npm run build:esm",
|
|
23
|
-
"build:esm": "rimraf esm && tsc -m es2015 --outDir esm",
|
|
24
|
-
"build:cjs": "rimraf cjs && tsc -m CommonJS --outDir cjs",
|
|
25
|
-
"test": "jest",
|
|
26
|
-
"test:coverage": "jest --coverage",
|
|
27
|
-
"all": "npm run check && npm run build && npm run test",
|
|
28
|
-
"publish:rc": "npm run check && npm run test && npm run build && npm publish --tag rc",
|
|
29
|
-
"publish:stable": "npm run check && npm run test && npm run build && npm publish"
|
|
30
|
-
},
|
|
31
|
-
"repository": {
|
|
32
|
-
"type": "git",
|
|
33
|
-
"url": "git+https://github.com/splitio/javascript-commons.git"
|
|
34
|
-
},
|
|
35
29
|
"keywords": [
|
|
36
30
|
"splitio",
|
|
37
31
|
"sdk",
|
|
38
32
|
"javascript"
|
|
39
33
|
],
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"bugs": "https://github.com/splitio/javascript-commons/issues",
|
|
46
|
-
"homepage": "https://github.com/splitio/javascript-commons#readme",
|
|
47
|
-
"dependencies": {
|
|
48
|
-
"@types/ioredis": "^4.28.0",
|
|
49
|
-
"tslib": "^2.3.1"
|
|
50
|
-
},
|
|
51
|
-
"peerDependencies": {
|
|
52
|
-
"ioredis": "^4.28.0"
|
|
34
|
+
"main": "cjs/index.js",
|
|
35
|
+
"module": "esm/index.js",
|
|
36
|
+
"types": "types",
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=14.0.0"
|
|
53
39
|
},
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@splitsoftware/splitio-commons": "2.5.0-rc.0",
|
|
42
|
+
"bloom-filters": "^3.0.4",
|
|
43
|
+
"ioredis": "^4.28.0",
|
|
44
|
+
"js-yaml": "^3.13.1",
|
|
45
|
+
"node-fetch": "^2.7.0",
|
|
46
|
+
"tslib": "^2.3.1",
|
|
47
|
+
"unfetch": "^4.2.0"
|
|
58
48
|
},
|
|
59
49
|
"devDependencies": {
|
|
60
|
-
"@types/
|
|
61
|
-
"@types/
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"@typescript-eslint/parser": "^6.6.0",
|
|
66
|
-
"cross-env": "^7.0.2",
|
|
50
|
+
"@types/node-fetch": "^2.6.10",
|
|
51
|
+
"@types/seedrandom": "^3.0.2",
|
|
52
|
+
"copyfiles": "^2.4.1",
|
|
53
|
+
"cross-env": "^7.0.3",
|
|
54
|
+
"csv-streamify": "4.0.0",
|
|
67
55
|
"eslint": "^8.48.0",
|
|
68
|
-
"eslint-plugin-compat": "^
|
|
69
|
-
"eslint-plugin-import": "^2.25.
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
56
|
+
"eslint-plugin-compat": "^4.2.0",
|
|
57
|
+
"eslint-plugin-import": "^2.25.4",
|
|
58
|
+
"fetch-mock": "^11.1.5",
|
|
59
|
+
"karma": "^6.3.16",
|
|
60
|
+
"karma-chrome-launcher": "^3.1.0",
|
|
61
|
+
"karma-tap": "^4.2.0",
|
|
62
|
+
"karma-webpack": "^5.0.0",
|
|
75
63
|
"lodash": "^4.17.21",
|
|
76
|
-
"node-
|
|
64
|
+
"node-polyfill-webpack-plugin": "^1.1.4",
|
|
65
|
+
"proxyquire": "^2.1.3",
|
|
66
|
+
"puppeteer": "^3.3.0",
|
|
67
|
+
"redis-dumpz": "0.1.12",
|
|
77
68
|
"redis-server": "1.2.2",
|
|
69
|
+
"replace": "^1.2.1",
|
|
78
70
|
"rimraf": "^3.0.2",
|
|
79
|
-
"
|
|
80
|
-
"
|
|
71
|
+
"sinon": "^9.2.4",
|
|
72
|
+
"tap-min": "^2.0.0",
|
|
73
|
+
"tape": "4.13.2",
|
|
74
|
+
"tape-catch": "1.0.6",
|
|
75
|
+
"ts-loader": "^9.2.6",
|
|
76
|
+
"ts-node": "^10.5.0",
|
|
77
|
+
"typescript": "4.4.4",
|
|
78
|
+
"webpack": "^5.53.0",
|
|
79
|
+
"webpack-cli": "^4.8.0",
|
|
80
|
+
"webpack-merge": "^5.8.0"
|
|
81
|
+
},
|
|
82
|
+
"scripts": {
|
|
83
|
+
"build-esm": "rimraf esm && tsc -outDir esm",
|
|
84
|
+
"postbuild-esm": "cross-env NODE_ENV=esm node scripts/copy.packages.json.js && ./scripts/build_esm_replace_imports.sh",
|
|
85
|
+
"build-umd:stats": "webpack --progress --env production --json > ./stats/stat_results.json",
|
|
86
|
+
"build-cjs": "rimraf cjs && tsc -outDir cjs -m CommonJS",
|
|
87
|
+
"postbuild-cjs": "cross-env NODE_ENV=cjs node scripts/copy.packages.json.js && ./scripts/build_cjs_replace_imports.sh",
|
|
88
|
+
"build-umd": "rimraf umd && webpack --config webpack.dev.js --env branch=$BUILD_BRANCH && webpack --config webpack.prod.js --env branch=$BUILD_BRANCH && ./scripts/clean_umd_build.sh",
|
|
89
|
+
"build:npm": "npm run build-cjs && npm run build-esm",
|
|
90
|
+
"build": "npm run build-cjs && npm run build-esm && npm run build-umd",
|
|
91
|
+
"check": "npm run check:lint && npm run check:version",
|
|
92
|
+
"check:lint": "eslint src",
|
|
93
|
+
"check:version": "cross-env NODE_ENV=test tape -r ./ts-node.register src/settings/__tests__/defaults.spec.js",
|
|
94
|
+
"test-browser": "npm run test-browser-unit && npm run test-browser-e2e",
|
|
95
|
+
"test-browser-unit": "cross-env NODE_ENV=test karma start karma/unit.karma.conf.js",
|
|
96
|
+
"test-browser-e2e": "npm run test-browser-e2e-online && npm run test-browser-e2e-offline && npm run test-browser-e2e-destroy && npm run test-browser-e2e-errorCatching && npm run test-browser-e2e-push",
|
|
97
|
+
"test-browser-e2e-online": "cross-env NODE_ENV=test karma start karma/e2e.online.karma.conf.js",
|
|
98
|
+
"test-browser-e2e-offline": "cross-env NODE_ENV=test karma start karma/e2e.offline.karma.conf.js",
|
|
99
|
+
"test-browser-e2e-destroy": "cross-env NODE_ENV=test karma start karma/e2e.destroy.karma.conf.js",
|
|
100
|
+
"test-browser-e2e-errorCatching": "cross-env NODE_ENV=test karma start karma/e2e.errorCatching.karma.conf.js",
|
|
101
|
+
"test-browser-e2e-push": "cross-env NODE_ENV=test karma start karma/e2e.push.karma.conf.js",
|
|
102
|
+
"test-node": "npm run test-node-unit && npm run test-node-e2e",
|
|
103
|
+
"test-node-unit": "cross-env NODE_ENV=test tape -r ./ts-node.register \"src/*/**/__tests__/**/!(browser).spec.js\" | tap-min",
|
|
104
|
+
"test-node-e2e": "npm run test-node-e2e-online && npm run test-node-e2e-offline && npm run test-node-e2e-destroy && npm run test-node-e2e-errorCatching && npm run test-node-e2e-push && npm run test-node-e2e-redis",
|
|
105
|
+
"test-node-e2e-online": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/online/node.spec.js | tap-min",
|
|
106
|
+
"test-node-e2e-offline": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/offline/node.spec.js | tap-min",
|
|
107
|
+
"test-node-e2e-destroy": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/destroy/node.spec.js | tap-min",
|
|
108
|
+
"test-node-e2e-errorCatching": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/errorCatching/node.spec.js | tap-min",
|
|
109
|
+
"test-node-e2e-push": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/push/node.spec.js | tap-min",
|
|
110
|
+
"test-node-e2e-redis": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/consumer/node_redis.spec.js | tap-min",
|
|
111
|
+
"test-ts-decls": "tsc --build ts-tests",
|
|
112
|
+
"test": "npm run test-node && npm run test-browser",
|
|
113
|
+
"all": "npm run check && npm run build && npm run test-ts-decls && npm run test",
|
|
114
|
+
"publish:rc": "npm run check && npm run build && npm publish --tag canary",
|
|
115
|
+
"publish:stable": "npm run check && npm run build && npm publish"
|
|
81
116
|
},
|
|
82
|
-
"
|
|
117
|
+
"greenkeeper": {
|
|
118
|
+
"ignore": [
|
|
119
|
+
"karma",
|
|
120
|
+
"karma-tap",
|
|
121
|
+
"karma-webpack"
|
|
122
|
+
]
|
|
123
|
+
}
|
|
83
124
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { splitApiFactory } from '@splitsoftware/splitio-commons/src/services/splitApi';
|
|
2
|
+
import { syncManagerOnlineFactory } from '@splitsoftware/splitio-commons/src/sync/syncManagerOnline';
|
|
3
|
+
import { pushManagerFactory } from '@splitsoftware/splitio-commons/src/sync/streaming/pushManager';
|
|
4
|
+
import { pollingManagerCSFactory } from '@splitsoftware/splitio-commons/src/sync/polling/pollingManagerCS';
|
|
5
|
+
import { InLocalStorage } from '@splitsoftware/splitio-commons/src/storages/inLocalStorage';
|
|
6
|
+
import { InMemoryStorageCSFactory } from '@splitsoftware/splitio-commons/src/storages/inMemory/InMemoryStorageCS';
|
|
7
|
+
import { sdkManagerFactory } from '@splitsoftware/splitio-commons/src/sdkManager';
|
|
8
|
+
import { sdkClientMethodCSFactory } from '@splitsoftware/splitio-commons/src/sdkClient/sdkClientMethodCS';
|
|
9
|
+
import { impressionObserverCSFactory } from '@splitsoftware/splitio-commons/src/trackers/impressionObserver/impressionObserverCS';
|
|
10
|
+
import { __InLocalStorageMockFactory } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/storage/storageCS';
|
|
11
|
+
import { sdkFactory } from '@splitsoftware/splitio-commons/src/sdkFactory';
|
|
12
|
+
import { LOCALHOST_MODE, STORAGE_LOCALSTORAGE } from '@splitsoftware/splitio-commons/src/utils/constants';
|
|
13
|
+
import { createUserConsentAPI } from '@splitsoftware/splitio-commons/src/consent/sdkUserConsent';
|
|
14
|
+
import { localhostFromObjectFactory } from '@splitsoftware/splitio-commons/src/sync/offline/LocalhostFromObject';
|
|
15
|
+
|
|
16
|
+
import { settingsFactory } from '../settings/browser';
|
|
17
|
+
import { platform, SignalListener } from '../platform';
|
|
18
|
+
|
|
19
|
+
const syncManagerOnlineCSFactory = syncManagerOnlineFactory(pollingManagerCSFactory, pushManagerFactory);
|
|
20
|
+
|
|
21
|
+
function getStorage(settings) {
|
|
22
|
+
return settings.storage.type === STORAGE_LOCALSTORAGE ?
|
|
23
|
+
InLocalStorage(settings.storage) :
|
|
24
|
+
settings.storage.__originalType === STORAGE_LOCALSTORAGE ?
|
|
25
|
+
__InLocalStorageMockFactory :
|
|
26
|
+
InMemoryStorageCSFactory;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings
|
|
32
|
+
*/
|
|
33
|
+
function getModules(settings) {
|
|
34
|
+
|
|
35
|
+
const modules = {
|
|
36
|
+
settings,
|
|
37
|
+
|
|
38
|
+
platform,
|
|
39
|
+
|
|
40
|
+
storageFactory: getStorage(settings),
|
|
41
|
+
|
|
42
|
+
splitApiFactory,
|
|
43
|
+
|
|
44
|
+
syncManagerFactory: syncManagerOnlineCSFactory,
|
|
45
|
+
|
|
46
|
+
sdkManagerFactory,
|
|
47
|
+
|
|
48
|
+
sdkClientMethodFactory: sdkClientMethodCSFactory,
|
|
49
|
+
|
|
50
|
+
SignalListener,
|
|
51
|
+
|
|
52
|
+
impressionsObserverFactory: impressionObserverCSFactory,
|
|
53
|
+
|
|
54
|
+
extraProps: (params) => {
|
|
55
|
+
return {
|
|
56
|
+
UserConsent: createUserConsentAPI(params)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
switch (settings.mode) {
|
|
62
|
+
case LOCALHOST_MODE:
|
|
63
|
+
modules.splitApiFactory = undefined;
|
|
64
|
+
modules.syncManagerFactory = localhostFromObjectFactory;
|
|
65
|
+
modules.SignalListener = undefined;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return modules;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* SplitFactory for client-side.
|
|
74
|
+
*
|
|
75
|
+
* @param {SplitIO.IBrowserSettings} config configuration object used to instantiate the SDK
|
|
76
|
+
* @param {Function=} __updateModules optional function that lets redefine internal SDK modules. Use with
|
|
77
|
+
* caution since, unlike `config`, this param is not validated neither considered part of the public API.
|
|
78
|
+
* @throws Will throw an error if the provided config is invalid.
|
|
79
|
+
*/
|
|
80
|
+
export function SplitFactory(config, __updateModules) {
|
|
81
|
+
const settings = settingsFactory(config);
|
|
82
|
+
const modules = getModules(settings);
|
|
83
|
+
if (__updateModules) __updateModules(modules);
|
|
84
|
+
return sdkFactory(modules);
|
|
85
|
+
}
|