@splitsoftware/splitio 10.17.3-rc.2 → 10.17.3
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 +4 -0
- package/es/client/attributesDecoration.js +116 -0
- package/es/client/browser.js +39 -0
- package/es/client/client.js +155 -0
- package/es/client/inputValidation.js +117 -0
- package/es/client/node.js +6 -0
- package/es/{factory → client}/package.json +0 -0
- package/es/engine/combiners/and.js +54 -0
- package/es/engine/combiners/ifelseif.js +73 -0
- package/es/engine/condition/index.js +62 -0
- package/es/engine/convertions/index.js +29 -0
- package/es/engine/engine/index.js +60 -0
- package/es/engine/engine/legacy.js +77 -0
- package/es/engine/engine/murmur3/common.js +40 -0
- package/es/engine/engine/murmur3/murmur3.js +83 -0
- package/es/engine/engine/murmur3/murmur3_128.js +250 -0
- package/es/engine/engine/murmur3/murmur3_128_x86.js +183 -0
- package/es/engine/engine/murmur3/murmur3_64.js +52 -0
- package/es/engine/engine/murmur3/utfx.js +112 -0
- package/es/engine/evaluator/index.js +111 -0
- package/es/engine/index.js +112 -0
- package/es/engine/matchers/all.js +32 -0
- package/es/engine/matchers/between.js +35 -0
- package/es/engine/matchers/boolean.js +35 -0
- package/es/engine/matchers/cont_all.js +51 -0
- package/es/engine/matchers/cont_any.js +47 -0
- package/es/engine/matchers/cont_str.js +38 -0
- package/es/engine/matchers/dependency.js +50 -0
- package/es/engine/matchers/eq.js +35 -0
- package/es/engine/matchers/eq_set.js +49 -0
- package/es/engine/matchers/ew.js +38 -0
- package/es/engine/matchers/gte.js +35 -0
- package/es/engine/matchers/index.js +65 -0
- package/es/engine/matchers/lte.js +35 -0
- package/es/engine/matchers/part_of.js +49 -0
- package/es/engine/matchers/segment.js +39 -0
- package/es/engine/matchers/string.js +44 -0
- package/es/engine/matchers/sw.js +38 -0
- package/es/engine/matchers/types.js +48 -0
- package/es/engine/matchers/whitelist.js +36 -0
- package/es/engine/parser/index.js +69 -0
- package/es/engine/parser/segments.js +22 -0
- package/es/engine/transforms/matcherGroup.js +43 -0
- package/es/engine/transforms/matchers.js +109 -0
- package/es/engine/transforms/segment.js +28 -0
- package/es/engine/transforms/set.js +20 -0
- package/es/engine/transforms/unaryNumeric.js +20 -0
- package/es/engine/transforms/whitelist.js +22 -0
- package/es/engine/treatments/index.js +67 -0
- package/es/engine/value/index.js +54 -0
- package/es/engine/value/sanitize.js +125 -0
- package/es/events/index.js +65 -0
- package/es/factory/offline.js +50 -0
- package/es/factory/online.js +113 -0
- package/es/impressions/counter.js +52 -0
- package/es/impressions/hasher/buildKey.js +3 -0
- package/es/impressions/hasher/hashImpression128.js +5 -0
- package/es/impressions/hasher/hashImpression32.js +5 -0
- package/es/impressions/observer/browser.js +9 -0
- package/es/impressions/observer/node.js +9 -0
- package/es/impressions/observer/observer.js +21 -0
- package/es/{platform/getEventSource → impressions/observer}/package.json +0 -0
- package/es/index.js +132 -1
- package/es/integrations/browser.js +62 -0
- package/es/integrations/ga/GaToSplit.js +246 -0
- package/es/integrations/ga/SplitToGa.js +127 -0
- package/es/integrations/node.js +3 -0
- package/es/{platform/getFetch → integrations}/package.json +0 -0
- package/es/listeners/browser.js +157 -0
- package/es/listeners/node.js +65 -0
- package/es/{platform → listeners}/package.json +0 -0
- package/es/manager/index.js +104 -0
- package/es/metrics/Collectors.js +100 -0
- package/es/metrics/index.js +157 -0
- package/es/producer/browser/Partial.js +103 -0
- package/es/producer/browser.js +70 -0
- package/es/producer/fetcher/MySegments.js +47 -0
- package/es/producer/fetcher/SegmentChanges.js +52 -0
- package/es/producer/fetcher/SplitChanges.js +46 -0
- package/es/producer/node.js +130 -0
- package/es/producer/offline/browser.js +26 -0
- package/es/producer/offline/node.js +26 -0
- package/es/{settings → producer/offline}/package.json +0 -0
- package/{lib/factory → es/producer}/package.json +0 -0
- package/es/producer/task.js +50 -0
- package/es/producer/updater/MySegments.js +108 -0
- package/es/producer/updater/SegmentChanges.js +135 -0
- package/es/producer/updater/SplitChanges.js +131 -0
- package/es/producer/updater/SplitChangesFromFeatures.js +21 -0
- package/es/producer/updater/SplitChangesFromFileSystem.js +21 -0
- package/es/producer/updater/SplitChangesFromObject.js +73 -0
- package/es/readiness/index.js +123 -0
- package/es/readiness/statusManager.js +114 -0
- package/es/services/auth/auth.js +25 -0
- package/es/services/auth/index.js +2 -0
- package/es/services/events/bulk.js +22 -0
- package/es/services/events/index.js +17 -0
- package/{src/platform → es/services}/getEventSource/browser.js +2 -2
- package/es/{platform → services}/getEventSource/node.js +1 -1
- package/{lib/platform → es/services}/getEventSource/package.json +0 -0
- package/es/{platform → services}/getFetch/browser.js +1 -1
- package/es/{platform → services}/getFetch/node.js +1 -1
- package/{lib/platform → es/services}/getFetch/package.json +0 -0
- package/es/services/impressions/bulk.js +26 -0
- package/es/services/impressions/count.js +7 -0
- package/es/services/impressions/dto.js +73 -0
- package/es/services/impressions/index.js +17 -0
- package/es/services/impressions/post.js +22 -0
- package/es/services/metrics/counters.js +24 -0
- package/es/services/metrics/dto.js +38 -0
- package/es/services/metrics/index.js +17 -0
- package/es/services/metrics/times.js +24 -0
- package/es/services/mySegments/get.js +26 -0
- package/es/services/mySegments/index.js +17 -0
- package/es/services/request/index.js +43 -0
- package/es/services/request/options/browser.js +18 -0
- package/es/{platform → services}/request/options/node.js +2 -2
- package/{lib/platform → es/services/request/options}/package.json +0 -0
- package/es/services/segmentChanges/get.js +21 -0
- package/es/services/segmentChanges/index.js +17 -0
- package/es/services/splitChanges/get.js +19 -0
- package/es/services/splitChanges/index.js +17 -0
- package/es/services/splitChanges/offline/browser.js +63 -0
- package/es/services/splitChanges/offline/node.js +176 -0
- package/{lib/settings → es/services/splitChanges/offline}/package.json +0 -0
- package/es/services/splitChanges/offline/parseCondition.js +43 -0
- package/es/services/transport/index.js +51 -0
- package/es/storage/AttributesCache/InMemory.js +85 -0
- package/es/storage/BaseMetricsAsyncCache.js +23 -0
- package/es/storage/CountCache/InMemory.js +48 -0
- package/es/storage/CountCache/InRedis.js +42 -0
- package/es/storage/EventsCache/InMemory.js +109 -0
- package/es/storage/EventsCache/InRedis.js +65 -0
- package/es/storage/ImpressionsCache/InMemory.js +71 -0
- package/es/storage/ImpressionsCache/InRedis.js +73 -0
- package/es/storage/Keys.js +125 -0
- package/es/storage/KeysLocalStorage.js +58 -0
- package/es/storage/LatencyCache/InMemory.js +56 -0
- package/es/storage/LatencyCache/InRedis.js +44 -0
- package/es/storage/LatencyCache/findIndex.js +2 -0
- package/es/storage/Meta.js +7 -0
- package/es/storage/RedisAdapter.js +198 -0
- package/es/storage/SegmentCache/InLocalStorage/index.js +162 -0
- package/es/storage/SegmentCache/InMemory/browser.js +107 -0
- package/es/storage/SegmentCache/InMemory/node.js +82 -0
- package/{src/factory → es/storage/SegmentCache/InMemory}/package.json +0 -0
- package/es/storage/SegmentCache/InRedis/index.js +81 -0
- package/es/storage/SplitCache/InLocalStorage.js +332 -0
- package/es/storage/SplitCache/InMemory.js +162 -0
- package/es/storage/SplitCache/InRedis.js +214 -0
- package/es/storage/SplitCache/killLocally.js +35 -0
- package/es/storage/browser.js +101 -0
- package/es/storage/node.js +81 -0
- package/{src/platform/getEventSource → es/storage}/package.json +0 -0
- package/es/sync/AuthClient/index.js +34 -0
- package/es/sync/PushManager/index.js +315 -0
- package/es/sync/PushManager/mySegmentsV2utils.js +76 -0
- package/es/sync/PushManager/pushRequirements/browser.js +23 -0
- package/es/sync/PushManager/pushRequirements/node.js +18 -0
- package/{src/platform/getFetch → es/sync/PushManager/pushRequirements}/package.json +0 -0
- package/es/sync/SSEClient/index.js +93 -0
- package/es/sync/SSEHandler/NotificationKeeper.js +97 -0
- package/es/sync/SSEHandler/NotificationParser.js +31 -0
- package/es/sync/SSEHandler/index.js +110 -0
- package/es/sync/SegmentUpdateWorker/browser.js +74 -0
- package/es/sync/SegmentUpdateWorker/node.js +79 -0
- package/{src/platform → es/sync/SegmentUpdateWorker}/package.json +0 -0
- package/es/sync/SplitUpdateWorker/index.js +86 -0
- package/es/sync/browser.js +125 -0
- package/es/sync/constants.js +42 -0
- package/es/sync/node.js +60 -0
- package/{src/settings → es/sync}/package.json +0 -0
- package/es/trackers/event.js +53 -0
- package/es/trackers/impressions.js +132 -0
- package/es/umd.js +1 -2
- package/es/utils/backoff/index.js +51 -0
- package/es/utils/base64/browser.js +19 -0
- package/es/utils/base64/node.js +19 -0
- package/es/utils/base64/package.json +4 -0
- package/es/utils/binarySearch/index.js +50 -0
- package/es/utils/constants/index.js +38 -0
- package/es/utils/context/constants.js +30 -0
- package/es/utils/context/index.js +101 -0
- package/es/utils/decompress/index.js +476 -0
- package/es/utils/fn/repeat.js +58 -0
- package/es/utils/inputValidation/apiKey.js +39 -0
- package/es/utils/inputValidation/attribute.js +22 -0
- package/es/utils/inputValidation/attributes.js +19 -0
- package/es/utils/inputValidation/event.js +23 -0
- package/es/utils/inputValidation/eventProperties.js +69 -0
- package/es/utils/inputValidation/eventValue.js +9 -0
- package/es/utils/inputValidation/index.js +11 -0
- package/es/utils/inputValidation/isOperational.js +14 -0
- package/es/utils/inputValidation/key.js +50 -0
- package/es/utils/inputValidation/split.js +47 -0
- package/es/utils/inputValidation/splitFilters.js +121 -0
- package/es/utils/inputValidation/splits.js +27 -0
- package/es/utils/inputValidation/trafficType.js +55 -0
- package/es/utils/jwt/hashUserKey.js +11 -0
- package/es/utils/jwt/index.js +14 -0
- package/es/utils/key/factory.js +38 -0
- package/es/utils/key/parser.js +34 -0
- package/es/utils/labels/index.js +7 -0
- package/es/utils/lang/Errors.js +41 -0
- package/es/utils/lang/Sets.js +114 -0
- package/es/utils/lang/index.js +305 -0
- package/es/utils/localstorage/isAvailable.js +26 -0
- package/es/utils/logger/LoggerFactory.js +86 -0
- package/es/utils/logger/index.js +97 -0
- package/es/utils/lrucache/linkedlist.js +122 -0
- package/es/utils/lrucache/lru.spec.js +24 -0
- package/es/utils/lrucache/lrucache.js +80 -0
- package/es/utils/now/browser.js +27 -0
- package/es/utils/now/node.js +19 -0
- package/es/utils/now/package.json +4 -0
- package/es/utils/promise/thenable.js +3 -0
- package/es/utils/promise/timeout.js +34 -0
- package/es/utils/promise/wrapper.js +58 -0
- package/es/{settings → utils/settings}/defaults/browser.js +2 -5
- package/es/{settings → utils/settings}/defaults/node.js +2 -5
- package/es/utils/settings/defaults/package.json +4 -0
- package/es/utils/settings/impressionsMode.js +16 -0
- package/es/utils/settings/index.js +194 -0
- package/es/utils/settings/integrations/browser.js +8 -0
- package/es/utils/settings/integrations/common.js +30 -0
- package/es/utils/settings/integrations/node.js +7 -0
- package/es/utils/settings/integrations/package.json +4 -0
- package/es/utils/settings/language/browser.js +16 -0
- package/es/utils/settings/language/node.js +16 -0
- package/es/utils/settings/language/package.json +4 -0
- package/es/utils/settings/mode.js +10 -0
- package/es/utils/settings/runtime/browser.js +21 -0
- package/es/{settings → utils/settings}/runtime/node.js +4 -6
- package/es/utils/settings/runtime/package.json +4 -0
- package/es/{settings → utils/settings}/storage/browser.js +17 -16
- package/es/{settings → utils/settings}/storage/node.js +16 -25
- package/es/utils/settings/storage/package.json +4 -0
- package/es/utils/splits/usesSegments.js +21 -0
- package/es/utils/time/index.js +8 -0
- package/es/utils/timeTracker/index.js +216 -0
- package/es/utils/timeTracker/timer.js +25 -0
- package/lib/client/attributesDecoration.js +128 -0
- package/lib/client/browser.js +50 -0
- package/lib/client/client.js +174 -0
- package/lib/client/inputValidation.js +129 -0
- package/lib/client/node.js +14 -0
- package/lib/client/package.json +4 -0
- package/lib/engine/combiners/and.js +65 -0
- package/lib/engine/combiners/ifelseif.js +88 -0
- package/lib/engine/condition/index.js +76 -0
- package/lib/engine/convertions/index.js +36 -0
- package/lib/engine/engine/index.js +71 -0
- package/lib/engine/engine/legacy.js +83 -0
- package/lib/engine/engine/murmur3/common.js +52 -0
- package/lib/engine/engine/murmur3/murmur3.js +90 -0
- package/lib/engine/engine/murmur3/murmur3_128.js +256 -0
- package/lib/engine/engine/murmur3/murmur3_128_x86.js +189 -0
- package/lib/engine/engine/murmur3/murmur3_64.js +57 -0
- package/lib/engine/engine/murmur3/utfx.js +121 -0
- package/lib/engine/evaluator/index.js +129 -0
- package/lib/engine/index.js +128 -0
- package/lib/engine/matchers/all.js +41 -0
- package/lib/engine/matchers/between.js +44 -0
- package/lib/engine/matchers/boolean.js +44 -0
- package/lib/engine/matchers/cont_all.js +61 -0
- package/lib/engine/matchers/cont_any.js +57 -0
- package/lib/engine/matchers/cont_str.js +48 -0
- package/lib/engine/matchers/dependency.js +60 -0
- package/lib/engine/matchers/eq.js +44 -0
- package/lib/engine/matchers/eq_set.js +59 -0
- package/lib/engine/matchers/ew.js +48 -0
- package/lib/engine/matchers/gte.js +44 -0
- package/lib/engine/matchers/index.js +90 -0
- package/lib/engine/matchers/lte.js +44 -0
- package/lib/engine/matchers/part_of.js +59 -0
- package/lib/engine/matchers/segment.js +49 -0
- package/lib/engine/matchers/string.js +53 -0
- package/lib/engine/matchers/sw.js +48 -0
- package/lib/engine/matchers/types.js +57 -0
- package/lib/engine/matchers/whitelist.js +46 -0
- package/lib/engine/parser/index.js +84 -0
- package/lib/engine/parser/segments.js +28 -0
- package/lib/engine/transforms/matcherGroup.js +54 -0
- package/lib/engine/transforms/matchers.js +124 -0
- package/lib/engine/transforms/segment.js +34 -0
- package/lib/engine/transforms/set.js +26 -0
- package/lib/engine/transforms/unaryNumeric.js +26 -0
- package/lib/engine/transforms/whitelist.js +28 -0
- package/lib/engine/treatments/index.js +73 -0
- package/lib/engine/value/index.js +64 -0
- package/lib/engine/value/sanitize.js +137 -0
- package/lib/events/index.js +80 -0
- package/lib/factory/offline.js +62 -0
- package/lib/factory/online.js +129 -0
- package/lib/impressions/counter.js +61 -0
- package/lib/impressions/hasher/buildKey.js +8 -0
- package/lib/impressions/hasher/hashImpression128.js +12 -0
- package/lib/impressions/hasher/hashImpression32.js +14 -0
- package/lib/impressions/observer/browser.js +19 -0
- package/lib/impressions/observer/node.js +19 -0
- package/lib/impressions/observer/observer.js +29 -0
- package/lib/impressions/observer/package.json +4 -0
- package/lib/index.js +151 -3
- package/lib/integrations/browser.js +72 -0
- package/lib/integrations/ga/GaToSplit.js +267 -0
- package/lib/integrations/ga/SplitToGa.js +138 -0
- package/lib/integrations/node.js +9 -0
- package/lib/integrations/package.json +4 -0
- package/lib/listeners/browser.js +173 -0
- package/lib/listeners/node.js +74 -0
- package/lib/listeners/package.json +4 -0
- package/lib/manager/index.js +115 -0
- package/lib/metrics/Collectors.js +118 -0
- package/lib/metrics/index.js +182 -0
- package/lib/producer/browser/Partial.js +114 -0
- package/lib/producer/browser.js +82 -0
- package/lib/producer/fetcher/MySegments.js +59 -0
- package/lib/producer/fetcher/SegmentChanges.js +62 -0
- package/lib/producer/fetcher/SplitChanges.js +58 -0
- package/lib/producer/node.js +142 -0
- package/lib/producer/offline/browser.js +35 -0
- package/lib/producer/offline/node.js +35 -0
- package/lib/producer/offline/package.json +4 -0
- package/lib/producer/package.json +4 -0
- package/lib/producer/task.js +61 -0
- package/lib/producer/updater/MySegments.js +119 -0
- package/lib/producer/updater/SegmentChanges.js +148 -0
- package/lib/producer/updater/SplitChanges.js +145 -0
- package/lib/producer/updater/SplitChangesFromFeatures.js +30 -0
- package/lib/producer/updater/SplitChangesFromFileSystem.js +30 -0
- package/lib/producer/updater/SplitChangesFromObject.js +84 -0
- package/lib/readiness/index.js +132 -0
- package/lib/readiness/statusManager.js +124 -0
- package/lib/services/auth/auth.js +32 -0
- package/lib/services/auth/index.js +11 -0
- package/lib/services/events/bulk.js +31 -0
- package/lib/services/events/index.js +26 -0
- package/lib/{platform → services}/getEventSource/browser.js +1 -1
- package/lib/{platform → services}/getEventSource/node.js +1 -1
- package/lib/services/getEventSource/package.json +4 -0
- package/lib/{platform → services}/getFetch/browser.js +1 -1
- package/lib/{platform → services}/getFetch/node.js +1 -1
- package/lib/services/getFetch/package.json +4 -0
- package/lib/services/impressions/bulk.js +36 -0
- package/lib/services/impressions/count.js +16 -0
- package/lib/services/impressions/dto.js +81 -0
- package/lib/services/impressions/index.js +26 -0
- package/lib/services/impressions/post.js +31 -0
- package/lib/services/metrics/counters.js +33 -0
- package/lib/services/metrics/dto.js +46 -0
- package/lib/services/metrics/index.js +26 -0
- package/lib/services/metrics/times.js +33 -0
- package/lib/services/mySegments/get.js +35 -0
- package/lib/services/mySegments/index.js +26 -0
- package/lib/services/request/index.js +53 -0
- package/lib/services/request/options/browser.js +23 -0
- package/lib/{platform → services}/request/options/node.js +2 -2
- package/lib/services/request/options/package.json +4 -0
- package/lib/services/segmentChanges/get.js +29 -0
- package/lib/services/segmentChanges/index.js +26 -0
- package/lib/services/splitChanges/get.js +27 -0
- package/lib/services/splitChanges/index.js +26 -0
- package/lib/services/splitChanges/offline/browser.js +71 -0
- package/lib/services/splitChanges/offline/node.js +189 -0
- package/lib/services/splitChanges/offline/package.json +4 -0
- package/lib/services/splitChanges/offline/parseCondition.js +49 -0
- package/lib/services/transport/index.js +62 -0
- package/lib/storage/AttributesCache/InMemory.js +93 -0
- package/lib/storage/BaseMetricsAsyncCache.js +28 -0
- package/lib/storage/CountCache/InMemory.js +54 -0
- package/lib/storage/CountCache/InRedis.js +50 -0
- package/lib/storage/EventsCache/InMemory.js +118 -0
- package/lib/storage/EventsCache/InRedis.js +74 -0
- package/lib/storage/ImpressionsCache/InMemory.js +77 -0
- package/lib/storage/ImpressionsCache/InRedis.js +79 -0
- package/lib/storage/Keys.js +132 -0
- package/lib/storage/KeysLocalStorage.js +69 -0
- package/lib/storage/LatencyCache/InMemory.js +64 -0
- package/lib/storage/LatencyCache/InRedis.js +53 -0
- package/lib/storage/LatencyCache/findIndex.js +12 -0
- package/lib/storage/Meta.js +12 -0
- package/lib/storage/RedisAdapter.js +212 -0
- package/lib/storage/SegmentCache/InLocalStorage/index.js +171 -0
- package/lib/storage/SegmentCache/InMemory/browser.js +113 -0
- package/lib/storage/SegmentCache/InMemory/node.js +89 -0
- package/lib/storage/SegmentCache/InMemory/package.json +4 -0
- package/lib/storage/SegmentCache/InRedis/index.js +87 -0
- package/lib/storage/SplitCache/InLocalStorage.js +344 -0
- package/lib/storage/SplitCache/InMemory.js +172 -0
- package/lib/storage/SplitCache/InRedis.js +224 -0
- package/lib/storage/SplitCache/killLocally.js +42 -0
- package/lib/storage/browser.js +122 -0
- package/lib/storage/node.js +104 -0
- package/lib/storage/package.json +4 -0
- package/lib/sync/AuthClient/index.js +44 -0
- package/lib/sync/PushManager/index.js +340 -0
- package/lib/sync/PushManager/mySegmentsV2utils.js +87 -0
- package/lib/sync/PushManager/pushRequirements/browser.js +30 -0
- package/lib/sync/PushManager/pushRequirements/node.js +25 -0
- package/lib/sync/PushManager/pushRequirements/package.json +4 -0
- package/lib/sync/SSEClient/index.js +101 -0
- package/lib/sync/SSEHandler/NotificationKeeper.js +104 -0
- package/lib/sync/SSEHandler/NotificationParser.js +39 -0
- package/lib/sync/SSEHandler/index.js +121 -0
- package/lib/sync/SegmentUpdateWorker/browser.js +81 -0
- package/lib/sync/SegmentUpdateWorker/node.js +86 -0
- package/lib/sync/SegmentUpdateWorker/package.json +4 -0
- package/lib/sync/SplitUpdateWorker/index.js +93 -0
- package/lib/sync/browser.js +139 -0
- package/lib/sync/constants.js +59 -0
- package/lib/sync/node.js +71 -0
- package/lib/sync/package.json +4 -0
- package/lib/trackers/event.js +64 -0
- package/lib/trackers/impressions.js +146 -0
- package/lib/umd.js +0 -1
- package/lib/utils/backoff/index.js +57 -0
- package/lib/utils/base64/browser.js +26 -0
- package/lib/utils/base64/node.js +26 -0
- package/lib/utils/base64/package.json +4 -0
- package/lib/utils/binarySearch/index.js +56 -0
- package/lib/utils/constants/index.js +60 -0
- package/lib/utils/context/constants.js +49 -0
- package/lib/utils/context/index.js +111 -0
- package/lib/utils/decompress/index.js +483 -0
- package/lib/utils/fn/repeat.js +64 -0
- package/lib/utils/inputValidation/apiKey.js +51 -0
- package/lib/utils/inputValidation/attribute.js +32 -0
- package/lib/utils/inputValidation/attributes.js +32 -0
- package/lib/utils/inputValidation/event.js +33 -0
- package/lib/utils/inputValidation/eventProperties.js +78 -0
- package/lib/utils/inputValidation/eventValue.js +19 -0
- package/lib/utils/inputValidation/index.js +48 -0
- package/lib/utils/inputValidation/isOperational.js +25 -0
- package/lib/utils/inputValidation/key.js +59 -0
- package/lib/utils/inputValidation/split.js +60 -0
- package/lib/utils/inputValidation/splitFilters.js +134 -0
- package/lib/utils/inputValidation/splits.js +38 -0
- package/lib/utils/inputValidation/trafficType.js +68 -0
- package/lib/utils/jwt/hashUserKey.js +19 -0
- package/lib/utils/jwt/index.js +19 -0
- package/lib/utils/key/factory.js +46 -0
- package/lib/utils/key/parser.js +42 -0
- package/lib/utils/labels/index.js +18 -0
- package/lib/utils/lang/Errors.js +58 -0
- package/lib/utils/lang/Sets.js +127 -0
- package/lib/utils/lang/index.js +350 -0
- package/lib/utils/localstorage/isAvailable.js +31 -0
- package/lib/utils/logger/LoggerFactory.js +98 -0
- package/lib/utils/logger/index.js +109 -0
- package/lib/utils/lrucache/linkedlist.js +132 -0
- package/lib/utils/lrucache/lru.spec.js +30 -0
- package/lib/utils/lrucache/lrucache.js +88 -0
- package/lib/utils/now/browser.js +33 -0
- package/lib/utils/now/node.js +24 -0
- package/lib/utils/now/package.json +4 -0
- package/lib/utils/promise/thenable.js +10 -0
- package/lib/utils/promise/timeout.js +40 -0
- package/lib/utils/promise/wrapper.js +63 -0
- package/{src → lib/utils}/settings/defaults/browser.js +6 -6
- package/{src → lib/utils}/settings/defaults/node.js +6 -6
- package/lib/utils/settings/defaults/package.json +4 -0
- package/lib/utils/settings/impressionsMode.js +26 -0
- package/lib/utils/settings/index.js +214 -0
- package/lib/utils/settings/integrations/browser.js +17 -0
- package/lib/utils/settings/integrations/common.js +40 -0
- package/lib/utils/settings/integrations/node.js +13 -0
- package/lib/utils/settings/integrations/package.json +4 -0
- package/lib/utils/settings/language/browser.js +22 -0
- package/lib/utils/settings/language/node.js +22 -0
- package/lib/utils/settings/language/package.json +4 -0
- package/lib/utils/settings/mode.js +16 -0
- package/lib/utils/settings/runtime/browser.js +26 -0
- package/lib/{settings → utils/settings}/runtime/node.js +5 -7
- package/lib/utils/settings/runtime/package.json +4 -0
- package/lib/{settings → utils/settings}/storage/browser.js +24 -20
- package/lib/{settings → utils/settings}/storage/node.js +17 -26
- package/lib/utils/settings/storage/package.json +4 -0
- package/lib/utils/splits/usesSegments.js +27 -0
- package/lib/utils/time/index.js +12 -0
- package/lib/utils/timeTracker/index.js +213 -0
- package/lib/utils/timeTracker/timer.js +33 -0
- package/package.json +16 -20
- package/src/client/attributesDecoration.js +112 -0
- package/src/client/browser.js +41 -0
- package/src/client/client.js +131 -0
- package/src/client/inputValidation.js +130 -0
- package/src/client/node.js +8 -0
- package/src/client/package.json +4 -0
- package/src/engine/combiners/and.js +55 -0
- package/src/engine/combiners/ifelseif.js +74 -0
- package/src/engine/condition/index.js +65 -0
- package/src/engine/convertions/index.js +22 -0
- package/src/engine/engine/index.js +63 -0
- package/src/engine/engine/legacy.js +66 -0
- package/src/engine/engine/murmur3/common.js +54 -0
- package/src/engine/engine/murmur3/murmur3.js +79 -0
- package/src/engine/engine/murmur3/murmur3_128.js +273 -0
- package/src/engine/engine/murmur3/murmur3_128_x86.js +188 -0
- package/src/engine/engine/murmur3/murmur3_64.js +34 -0
- package/src/engine/engine/murmur3/utfx.js +111 -0
- package/src/engine/evaluator/index.js +148 -0
- package/src/engine/index.js +123 -0
- package/src/engine/matchers/all.js +29 -0
- package/src/engine/matchers/between.js +30 -0
- package/src/engine/matchers/boolean.js +29 -0
- package/src/engine/matchers/cont_all.js +40 -0
- package/src/engine/matchers/cont_any.js +35 -0
- package/src/engine/matchers/cont_str.js +31 -0
- package/src/engine/matchers/dependency.js +52 -0
- package/src/engine/matchers/eq.js +30 -0
- package/src/engine/matchers/eq_set.js +37 -0
- package/src/engine/matchers/ew.js +31 -0
- package/src/engine/matchers/gte.js +30 -0
- package/src/engine/matchers/index.js +71 -0
- package/src/engine/matchers/lte.js +30 -0
- package/src/engine/matchers/part_of.js +37 -0
- package/src/engine/matchers/segment.js +41 -0
- package/src/engine/matchers/string.js +39 -0
- package/src/engine/matchers/sw.js +31 -0
- package/src/engine/matchers/types.js +52 -0
- package/src/engine/matchers/whitelist.js +30 -0
- package/src/engine/parser/index.js +79 -0
- package/src/engine/parser/segments.js +31 -0
- package/src/engine/transforms/matcherGroup.js +45 -0
- package/src/engine/transforms/matchers.js +118 -0
- package/src/engine/transforms/segment.js +23 -0
- package/src/engine/transforms/set.js +20 -0
- package/src/engine/transforms/unaryNumeric.js +20 -0
- package/src/engine/transforms/whitelist.js +22 -0
- package/src/engine/treatments/index.js +67 -0
- package/src/engine/value/index.js +53 -0
- package/src/engine/value/sanitize.js +117 -0
- package/src/events/index.js +62 -0
- package/src/factory/offline.js +60 -0
- package/src/factory/online.js +127 -0
- package/src/impressions/counter.js +43 -0
- package/src/impressions/hasher/buildKey.js +3 -0
- package/src/impressions/hasher/hashImpression128.js +6 -0
- package/src/impressions/hasher/hashImpression32.js +6 -0
- package/src/impressions/observer/browser.js +8 -0
- package/src/impressions/observer/node.js +8 -0
- package/src/impressions/observer/observer.js +17 -0
- package/src/impressions/observer/package.json +4 -0
- package/src/index.js +140 -1
- package/src/integrations/browser.js +57 -0
- package/src/integrations/ga/GaToSplit.js +278 -0
- package/src/integrations/ga/SplitToGa.js +125 -0
- package/src/integrations/node.js +4 -0
- package/src/integrations/package.json +4 -0
- package/src/listeners/browser.js +137 -0
- package/src/listeners/node.js +59 -0
- package/src/listeners/package.json +4 -0
- package/src/manager/index.js +103 -0
- package/src/metrics/Collectors.js +77 -0
- package/src/metrics/index.js +174 -0
- package/src/producer/browser/Partial.js +104 -0
- package/src/producer/browser.js +82 -0
- package/src/producer/fetcher/MySegments.js +40 -0
- package/src/producer/fetcher/SegmentChanges.js +52 -0
- package/src/producer/fetcher/SplitChanges.js +39 -0
- package/src/producer/node.js +142 -0
- package/src/producer/offline/browser.js +28 -0
- package/src/producer/offline/node.js +28 -0
- package/src/producer/offline/package.json +4 -0
- package/src/producer/package.json +4 -0
- package/src/producer/task.js +57 -0
- package/src/producer/updater/MySegments.js +104 -0
- package/src/producer/updater/SegmentChanges.js +126 -0
- package/src/producer/updater/SplitChanges.js +138 -0
- package/src/producer/updater/SplitChangesFromFeatures.js +23 -0
- package/src/producer/updater/SplitChangesFromFileSystem.js +23 -0
- package/src/producer/updater/SplitChangesFromObject.js +81 -0
- package/src/readiness/index.js +125 -0
- package/src/readiness/statusManager.js +121 -0
- package/src/services/auth/auth.js +21 -0
- package/src/services/auth/index.js +3 -0
- package/src/services/events/bulk.js +23 -0
- package/src/services/events/index.js +18 -0
- package/{es/platform → src/services}/getEventSource/browser.js +1 -1
- package/src/{platform → services}/getEventSource/node.js +2 -2
- package/src/services/getEventSource/package.json +4 -0
- package/src/{platform → services}/getFetch/browser.js +2 -2
- package/src/{platform → services}/getFetch/node.js +1 -1
- package/src/services/getFetch/package.json +4 -0
- package/src/services/impressions/bulk.js +26 -0
- package/src/services/impressions/count.js +8 -0
- package/src/services/impressions/dto.js +71 -0
- package/src/services/impressions/index.js +18 -0
- package/src/services/impressions/post.js +23 -0
- package/src/services/metrics/counters.js +25 -0
- package/src/services/metrics/dto.js +44 -0
- package/src/services/metrics/index.js +18 -0
- package/src/services/metrics/times.js +25 -0
- package/src/services/mySegments/get.js +27 -0
- package/src/services/mySegments/index.js +18 -0
- package/src/services/request/index.js +43 -0
- package/src/services/request/options/browser.js +18 -0
- package/src/{platform → services}/request/options/node.js +2 -2
- package/src/services/request/options/package.json +4 -0
- package/src/services/segmentChanges/get.js +20 -0
- package/src/services/segmentChanges/index.js +18 -0
- package/src/services/splitChanges/get.js +20 -0
- package/src/services/splitChanges/index.js +18 -0
- package/src/services/splitChanges/offline/browser.js +66 -0
- package/src/services/splitChanges/offline/node.js +190 -0
- package/src/services/splitChanges/offline/package.json +4 -0
- package/src/services/splitChanges/offline/parseCondition.js +52 -0
- package/src/services/transport/index.js +44 -0
- package/src/storage/AttributesCache/InMemory.js +76 -0
- package/src/storage/BaseMetricsAsyncCache.js +14 -0
- package/src/storage/CountCache/InMemory.js +48 -0
- package/src/storage/CountCache/InRedis.js +32 -0
- package/src/storage/EventsCache/InMemory.js +99 -0
- package/src/storage/EventsCache/InRedis.js +62 -0
- package/src/storage/ImpressionsCache/InMemory.js +62 -0
- package/src/storage/ImpressionsCache/InRedis.js +65 -0
- package/src/storage/Keys.js +122 -0
- package/src/storage/KeysLocalStorage.js +52 -0
- package/src/storage/LatencyCache/InMemory.js +56 -0
- package/src/storage/LatencyCache/InRedis.js +35 -0
- package/src/storage/LatencyCache/findIndex.js +7 -0
- package/src/storage/Meta.js +7 -0
- package/src/storage/RedisAdapter.js +170 -0
- package/src/storage/SegmentCache/InLocalStorage/index.js +140 -0
- package/src/storage/SegmentCache/InMemory/browser.js +99 -0
- package/src/storage/SegmentCache/InMemory/node.js +84 -0
- package/src/storage/SegmentCache/InMemory/package.json +4 -0
- package/src/storage/SegmentCache/InRedis/index.js +71 -0
- package/src/storage/SplitCache/InLocalStorage.js +324 -0
- package/src/storage/SplitCache/InMemory.js +145 -0
- package/src/storage/SplitCache/InRedis.js +187 -0
- package/src/storage/SplitCache/killLocally.js +33 -0
- package/src/storage/browser.js +110 -0
- package/src/storage/node.js +83 -0
- package/src/storage/package.json +4 -0
- package/src/sync/AuthClient/index.js +31 -0
- package/src/sync/PushManager/index.js +328 -0
- package/src/sync/PushManager/mySegmentsV2utils.js +76 -0
- package/src/sync/PushManager/pushRequirements/browser.js +20 -0
- package/src/sync/PushManager/pushRequirements/node.js +16 -0
- package/src/sync/PushManager/pushRequirements/package.json +4 -0
- package/src/sync/SSEClient/index.js +92 -0
- package/src/sync/SSEHandler/NotificationKeeper.js +90 -0
- package/src/sync/SSEHandler/NotificationParser.js +35 -0
- package/src/sync/SSEHandler/index.js +110 -0
- package/src/sync/SegmentUpdateWorker/browser.js +67 -0
- package/src/sync/SegmentUpdateWorker/node.js +73 -0
- package/src/sync/SegmentUpdateWorker/package.json +4 -0
- package/src/sync/SplitUpdateWorker/index.js +79 -0
- package/src/sync/browser.js +130 -0
- package/src/sync/constants.js +43 -0
- package/src/sync/node.js +66 -0
- package/src/sync/package.json +4 -0
- package/src/trackers/event.js +47 -0
- package/src/trackers/impressions.js +123 -0
- package/src/umd.js +0 -1
- package/src/utils/backoff/index.js +46 -0
- package/src/utils/base64/browser.js +19 -0
- package/src/utils/base64/node.js +19 -0
- package/src/utils/base64/package.json +4 -0
- package/src/utils/binarySearch/index.js +50 -0
- package/src/utils/constants/index.js +41 -0
- package/src/utils/context/constants.js +18 -0
- package/src/utils/context/index.js +84 -0
- package/src/utils/decompress/index.js +428 -0
- package/src/utils/fn/repeat.js +48 -0
- package/src/utils/inputValidation/apiKey.js +42 -0
- package/src/utils/inputValidation/attribute.js +22 -0
- package/src/utils/inputValidation/attributes.js +26 -0
- package/src/utils/inputValidation/event.js +23 -0
- package/src/utils/inputValidation/eventProperties.js +65 -0
- package/src/utils/inputValidation/eventValue.js +11 -0
- package/src/utils/inputValidation/index.js +11 -0
- package/src/utils/inputValidation/isOperational.js +16 -0
- package/src/utils/inputValidation/key.js +53 -0
- package/src/utils/inputValidation/split.js +42 -0
- package/src/utils/inputValidation/splitFilters.js +108 -0
- package/src/utils/inputValidation/splits.js +21 -0
- package/src/utils/inputValidation/trafficType.js +58 -0
- package/src/utils/jwt/hashUserKey.js +11 -0
- package/src/utils/jwt/index.js +15 -0
- package/src/utils/key/factory.js +34 -0
- package/src/utils/key/parser.js +34 -0
- package/src/utils/labels/index.js +7 -0
- package/src/utils/lang/Errors.js +19 -0
- package/src/utils/lang/Sets.js +94 -0
- package/src/utils/lang/index.js +291 -0
- package/src/utils/localstorage/isAvailable.js +26 -0
- package/src/utils/logger/LoggerFactory.js +90 -0
- package/src/utils/logger/index.js +93 -0
- package/src/utils/lrucache/linkedlist.js +116 -0
- package/src/utils/lrucache/lru.spec.js +26 -0
- package/src/utils/lrucache/lrucache.js +49 -0
- package/src/utils/now/browser.js +29 -0
- package/src/utils/now/node.js +21 -0
- package/src/utils/now/package.json +4 -0
- package/src/utils/promise/thenable.js +1 -0
- package/src/utils/promise/timeout.js +38 -0
- package/src/utils/promise/wrapper.js +60 -0
- package/{lib → src/utils}/settings/defaults/browser.js +3 -13
- package/{lib → src/utils}/settings/defaults/node.js +2 -12
- package/src/utils/settings/defaults/package.json +4 -0
- package/src/utils/settings/impressionsMode.js +15 -0
- package/src/utils/settings/index.js +217 -0
- package/src/utils/settings/integrations/browser.js +8 -0
- package/src/utils/settings/integrations/common.js +32 -0
- package/src/{settings → utils/settings}/integrations/node.js +3 -1
- package/src/utils/settings/integrations/package.json +4 -0
- package/src/utils/settings/language/browser.js +17 -0
- package/src/utils/settings/language/node.js +17 -0
- package/src/utils/settings/language/package.json +4 -0
- package/src/utils/settings/mode.js +12 -0
- package/src/utils/settings/runtime/browser.js +22 -0
- package/src/{settings → utils/settings}/runtime/node.js +6 -9
- package/src/utils/settings/runtime/package.json +4 -0
- package/src/{settings → utils/settings}/storage/browser.js +18 -13
- package/src/{settings → utils/settings}/storage/node.js +14 -19
- package/src/utils/settings/storage/package.json +4 -0
- package/src/utils/splits/usesSegments.js +17 -0
- package/src/utils/time/index.js +8 -0
- package/src/utils/timeTracker/index.js +223 -0
- package/src/utils/timeTracker/timer.js +27 -0
- package/types/splitio.d.ts +5 -22
- package/client/package.json +0 -5
- package/es/factory/browser.js +0 -58
- package/es/factory/node.js +0 -59
- package/es/platform/EventEmitter.js +0 -412
- package/es/platform/browser.js +0 -10
- package/es/platform/node.js +0 -12
- package/es/settings/browser.js +0 -18
- package/es/settings/defaults/version.js +0 -1
- package/es/settings/integrations/browser.js +0 -5
- package/es/settings/integrations/node.js +0 -5
- package/es/settings/node.js +0 -20
- package/lib/factory/browser.js +0 -79
- package/lib/factory/node.js +0 -78
- package/lib/platform/EventEmitter.js +0 -417
- package/lib/platform/browser.js +0 -21
- package/lib/platform/node.js +0 -26
- package/lib/settings/browser.js +0 -30
- package/lib/settings/defaults/version.js +0 -6
- package/lib/settings/integrations/browser.js +0 -14
- package/lib/settings/integrations/node.js +0 -12
- package/lib/settings/node.js +0 -33
- package/server/package.json +0 -5
- package/src/.DS_Store +0 -0
- package/src/factory/browser.js +0 -74
- package/src/factory/node.js +0 -71
- package/src/platform/.DS_Store +0 -0
- package/src/platform/EventEmitter.js +0 -443
- package/src/platform/browser.js +0 -12
- package/src/platform/node.js +0 -14
- package/src/settings/.DS_Store +0 -0
- package/src/settings/browser.js +0 -18
- package/src/settings/defaults/version.js +0 -1
- package/src/settings/integrations/browser.js +0 -6
- package/src/settings/node.js +0 -20
- package/types/client/index.d.ts +0 -14
- package/types/server/index.d.ts +0 -20
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _constants = require("../constants");
|
|
9
|
+
|
|
10
|
+
var _logger = _interopRequireDefault(require("../logger"));
|
|
11
|
+
|
|
12
|
+
var log = (0, _logger.default)('splitio-settings');
|
|
13
|
+
|
|
14
|
+
function validImpressionsMode(impressionsMode) {
|
|
15
|
+
impressionsMode = impressionsMode.toUpperCase();
|
|
16
|
+
|
|
17
|
+
if ([_constants.DEBUG, _constants.OPTIMIZED].indexOf(impressionsMode) === -1) {
|
|
18
|
+
log.error("You passed an invalid impressionsMode, impressionsMode should be one of the following values: '" + _constants.DEBUG + "' or '" + _constants.OPTIMIZED + "'. Defaulting to '" + _constants.OPTIMIZED + "' mode.");
|
|
19
|
+
impressionsMode = _constants.OPTIMIZED;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return impressionsMode;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var _default = validImpressionsMode;
|
|
26
|
+
exports.default = _default;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _objectAssign = _interopRequireDefault(require("object-assign"));
|
|
9
|
+
|
|
10
|
+
var _lang = require("../lang");
|
|
11
|
+
|
|
12
|
+
var _language = _interopRequireDefault(require("./language"));
|
|
13
|
+
|
|
14
|
+
var _runtime = _interopRequireDefault(require("./runtime"));
|
|
15
|
+
|
|
16
|
+
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
17
|
+
|
|
18
|
+
var _storage = _interopRequireDefault(require("./storage"));
|
|
19
|
+
|
|
20
|
+
var _integrations = _interopRequireDefault(require("./integrations"));
|
|
21
|
+
|
|
22
|
+
var _mode = _interopRequireDefault(require("./mode"));
|
|
23
|
+
|
|
24
|
+
var _splitFilters = _interopRequireDefault(require("../inputValidation/splitFilters"));
|
|
25
|
+
|
|
26
|
+
var _logger = require("../../utils/logger");
|
|
27
|
+
|
|
28
|
+
var _constants = require("../../utils/constants");
|
|
29
|
+
|
|
30
|
+
var _impressionsMode = _interopRequireDefault(require("./impressionsMode"));
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
Copyright 2016 Split Software
|
|
34
|
+
|
|
35
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
36
|
+
you may not use this file except in compliance with the License.
|
|
37
|
+
You may obtain a copy of the License at
|
|
38
|
+
|
|
39
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
40
|
+
|
|
41
|
+
Unless required by applicable law or agreed to in writing, software
|
|
42
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
43
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
44
|
+
See the License for the specific language governing permissions and
|
|
45
|
+
limitations under the License.
|
|
46
|
+
**/
|
|
47
|
+
var version = '10.17.3';
|
|
48
|
+
var eventsEndpointMatcher = /^\/(testImpressions|metrics|events)/;
|
|
49
|
+
var authEndpointMatcher = /^\/v2\/auth/;
|
|
50
|
+
var streamingEndpointMatcher = /^\/(sse|event-stream)/;
|
|
51
|
+
var base = {
|
|
52
|
+
// Define which kind of object you want to retrieve from SplitFactory
|
|
53
|
+
mode: _constants.STANDALONE_MODE,
|
|
54
|
+
core: {
|
|
55
|
+
// API token (tight to an environment)
|
|
56
|
+
authorizationKey: undefined,
|
|
57
|
+
// key used in your system (only required for browser version)
|
|
58
|
+
key: undefined,
|
|
59
|
+
// traffic type for the given key (only used on browser version)
|
|
60
|
+
trafficType: undefined,
|
|
61
|
+
// toggle impressions tracking of labels
|
|
62
|
+
labelsEnabled: true,
|
|
63
|
+
// toggle sendind (true) or not sending (false) IP and Host Name with impressions, events, and telemetries requests (only used on nodejs version)
|
|
64
|
+
IPAddressesEnabled: undefined
|
|
65
|
+
},
|
|
66
|
+
scheduler: {
|
|
67
|
+
// fetch feature updates each 30 sec
|
|
68
|
+
featuresRefreshRate: 30,
|
|
69
|
+
// fetch segments updates each 60 sec
|
|
70
|
+
segmentsRefreshRate: 60,
|
|
71
|
+
// publish metrics each 120 sec
|
|
72
|
+
metricsRefreshRate: 120,
|
|
73
|
+
// publish evaluations each 60 sec
|
|
74
|
+
impressionsRefreshRate: 60,
|
|
75
|
+
// fetch offline changes each 15 sec
|
|
76
|
+
offlineRefreshRate: 15,
|
|
77
|
+
// publish events every 60 seconds after the first flush
|
|
78
|
+
eventsPushRate: 60,
|
|
79
|
+
// how many events will be queued before flushing
|
|
80
|
+
eventsQueueSize: 500,
|
|
81
|
+
// backoff base seconds to wait before re attempting to connect to push notifications
|
|
82
|
+
pushRetryBackoffBase: 1
|
|
83
|
+
},
|
|
84
|
+
urls: {
|
|
85
|
+
// CDN having all the information for your environment
|
|
86
|
+
sdk: 'https://sdk.split.io/api',
|
|
87
|
+
// Storage for your SDK events
|
|
88
|
+
events: 'https://events.split.io/api',
|
|
89
|
+
// SDK Auth Server
|
|
90
|
+
auth: 'https://auth.split.io/api',
|
|
91
|
+
// Streaming Server
|
|
92
|
+
streaming: 'https://streaming.split.io'
|
|
93
|
+
},
|
|
94
|
+
// Defines which kind of storage we should instanciate.
|
|
95
|
+
storage: {
|
|
96
|
+
type: _constants.STORAGE_MEMORY
|
|
97
|
+
},
|
|
98
|
+
// Defines if the logs are enabled, SDK wide.
|
|
99
|
+
debug: undefined,
|
|
100
|
+
// Defines the impression listener, but will only be used on NodeJS.
|
|
101
|
+
impressionListener: undefined,
|
|
102
|
+
// Instance version.
|
|
103
|
+
version: _language.default + "-" + version,
|
|
104
|
+
// List of integrations.
|
|
105
|
+
integrations: undefined,
|
|
106
|
+
// toggle using (true) or not using (false) Server-Side Events for synchronizing storage
|
|
107
|
+
streamingEnabled: true,
|
|
108
|
+
sync: {
|
|
109
|
+
splitFilters: undefined,
|
|
110
|
+
// impressions collection mode
|
|
111
|
+
impressionsMode: _constants.OPTIMIZED
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
function fromSecondsToMillis(n) {
|
|
116
|
+
return Math.round(n * 1000);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function setupLogger(debugValue) {
|
|
120
|
+
if (typeof debugValue === 'boolean') {
|
|
121
|
+
if (debugValue) {
|
|
122
|
+
_logger.API.enable();
|
|
123
|
+
} else {
|
|
124
|
+
_logger.API.disable();
|
|
125
|
+
}
|
|
126
|
+
} else if (typeof debugValue === 'string') {
|
|
127
|
+
_logger.API.setLogLevel(debugValue);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function defaults(custom) {
|
|
132
|
+
var withDefaults = (0, _lang.merge)({}, base, _defaults.default, custom); // Scheduler periods
|
|
133
|
+
|
|
134
|
+
withDefaults.scheduler.featuresRefreshRate = fromSecondsToMillis(withDefaults.scheduler.featuresRefreshRate);
|
|
135
|
+
withDefaults.scheduler.segmentsRefreshRate = fromSecondsToMillis(withDefaults.scheduler.segmentsRefreshRate);
|
|
136
|
+
withDefaults.scheduler.metricsRefreshRate = fromSecondsToMillis(withDefaults.scheduler.metricsRefreshRate);
|
|
137
|
+
withDefaults.scheduler.impressionsRefreshRate = fromSecondsToMillis(withDefaults.scheduler.impressionsRefreshRate);
|
|
138
|
+
withDefaults.scheduler.offlineRefreshRate = fromSecondsToMillis(withDefaults.scheduler.offlineRefreshRate);
|
|
139
|
+
withDefaults.scheduler.eventsPushRate = fromSecondsToMillis(withDefaults.scheduler.eventsPushRate); // Startup periods
|
|
140
|
+
|
|
141
|
+
withDefaults.startup.requestTimeoutBeforeReady = fromSecondsToMillis(withDefaults.startup.requestTimeoutBeforeReady);
|
|
142
|
+
withDefaults.startup.readyTimeout = fromSecondsToMillis(withDefaults.startup.readyTimeout);
|
|
143
|
+
withDefaults.startup.eventsFirstPushWindow = fromSecondsToMillis(withDefaults.startup.eventsFirstPushWindow); // ensure a valid SDK mode
|
|
144
|
+
|
|
145
|
+
withDefaults.mode = (0, _mode.default)(withDefaults.core.authorizationKey, withDefaults.mode); // ensure a valid Storage based on mode defined.
|
|
146
|
+
|
|
147
|
+
withDefaults.storage = (0, _storage.default)(withDefaults);
|
|
148
|
+
setupLogger(withDefaults.debug); // Current ip/hostname information
|
|
149
|
+
|
|
150
|
+
withDefaults.runtime = (0, _runtime.default)(withDefaults.core.IPAddressesEnabled, withDefaults.mode === _constants.CONSUMER_MODE); // ensure a valid list of integrations.
|
|
151
|
+
// `integrations` returns an array of valid integration items.
|
|
152
|
+
|
|
153
|
+
withDefaults.integrations = (0, _integrations.default)(withDefaults); // validate push options
|
|
154
|
+
|
|
155
|
+
if (withDefaults.streamingEnabled !== false) {
|
|
156
|
+
withDefaults.streamingEnabled = true; // Backoff bases.
|
|
157
|
+
// We are not checking if bases are positive numbers. Thus, we might be reauthenticating immediately (`setTimeout` with NaN or negative number)
|
|
158
|
+
|
|
159
|
+
withDefaults.scheduler.pushRetryBackoffBase = fromSecondsToMillis(withDefaults.scheduler.pushRetryBackoffBase);
|
|
160
|
+
} // validate the `splitFilters` settings and parse splits query
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
var splitFiltersValidation = (0, _splitFilters.default)(withDefaults.sync.splitFilters, withDefaults.mode);
|
|
164
|
+
withDefaults.sync.splitFilters = splitFiltersValidation.validFilters;
|
|
165
|
+
withDefaults.sync.__splitFiltersValidation = splitFiltersValidation; // ensure a valid impressionsMode
|
|
166
|
+
|
|
167
|
+
withDefaults.sync.impressionsMode = (0, _impressionsMode.default)(withDefaults.sync.impressionsMode);
|
|
168
|
+
return withDefaults;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
var proto = {
|
|
172
|
+
/**
|
|
173
|
+
* Switch URLs servers based on target.
|
|
174
|
+
*
|
|
175
|
+
* @param {String} target url target
|
|
176
|
+
* @return {String} completed url
|
|
177
|
+
*/
|
|
178
|
+
url: function url(target) {
|
|
179
|
+
if (eventsEndpointMatcher.test(target)) {
|
|
180
|
+
return "" + this.urls.events + target;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (authEndpointMatcher.test(target)) {
|
|
184
|
+
return "" + this.urls.auth + target;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (streamingEndpointMatcher.test(target)) {
|
|
188
|
+
return "" + this.urls.streaming + target;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return "" + this.urls.sdk + target;
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Returns a settings clone with the key and traffic type (if provided) overriden.
|
|
196
|
+
* @param {SplitKey} key
|
|
197
|
+
* @param {string} [trafficType]
|
|
198
|
+
*/
|
|
199
|
+
overrideKeyAndTT: function overrideKeyAndTT(key, trafficType) {
|
|
200
|
+
return (0, _objectAssign.default)(Object.create(proto), this, {
|
|
201
|
+
core: (0, _objectAssign.default)({}, this.core, {
|
|
202
|
+
key: key,
|
|
203
|
+
trafficType: trafficType
|
|
204
|
+
})
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
var SettingsFactory = function SettingsFactory(settings) {
|
|
210
|
+
return (0, _objectAssign.default)(Object.create(proto), defaults(settings));
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
var _default = SettingsFactory;
|
|
214
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _constants = require("../../../utils/constants");
|
|
9
|
+
|
|
10
|
+
var _common = _interopRequireDefault(require("./common"));
|
|
11
|
+
|
|
12
|
+
var validateBrowserIntegrationsSettings = function validateBrowserIntegrationsSettings(settings) {
|
|
13
|
+
return (0, _common.default)(settings, [_constants.GOOGLE_ANALYTICS_TO_SPLIT, _constants.SPLIT_TO_GOOGLE_ANALYTICS]);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var _default = validateBrowserIntegrationsSettings;
|
|
17
|
+
exports.default = _default;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _logger = _interopRequireDefault(require("../../../utils/logger"));
|
|
9
|
+
|
|
10
|
+
var _lang = require("../../../utils/lang");
|
|
11
|
+
|
|
12
|
+
var log = (0, _logger.default)('splitio-settings');
|
|
13
|
+
/**
|
|
14
|
+
* This function validates `settings.integrations` object
|
|
15
|
+
*
|
|
16
|
+
* @param {Object} settings SDK settings object to validate
|
|
17
|
+
* @param {Array<string>} validIntegrationTypes list of integration types to filter from `settings.integrations`
|
|
18
|
+
*
|
|
19
|
+
* @returns {Array} array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
var validateIntegrationsSettings = function validateIntegrationsSettings(settings, validIntegrationTypes) {
|
|
23
|
+
if (validIntegrationTypes === void 0) {
|
|
24
|
+
validIntegrationTypes = [];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var integrations = settings.integrations; // If integrations is not an array or an empty array, we return an empty array (no integrations).
|
|
28
|
+
|
|
29
|
+
if (!Array.isArray(integrations) || integrations.length === 0) return []; // We remove invalid integration items
|
|
30
|
+
|
|
31
|
+
var validIntegrations = integrations.filter(function (integration) {
|
|
32
|
+
return integration && (0, _lang.isString)(integration.type) && validIntegrationTypes.indexOf(integration.type) > -1;
|
|
33
|
+
});
|
|
34
|
+
var invalids = integrations.length - validIntegrations.length;
|
|
35
|
+
if (invalids) log.warn(invalids + " integration " + (invalids === 1 ? 'item' : 'items') + " at settings " + (invalids === 1 ? 'is' : 'are') + " invalid: integration items must have a valid 'type' value");
|
|
36
|
+
return validIntegrations;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var _default = validateIntegrationsSettings;
|
|
40
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
// For now, Node SDK does not support integrations,
|
|
7
|
+
// thus any integrations settings is parsed into undefined.
|
|
8
|
+
var validateNodeIntegrationsSettings = function validateNodeIntegrationsSettings() {
|
|
9
|
+
return [];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
var _default = validateNodeIntegrationsSettings;
|
|
13
|
+
exports.default = _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
Copyright 2016 Split Software
|
|
8
|
+
|
|
9
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
you may not use this file except in compliance with the License.
|
|
11
|
+
You may obtain a copy of the License at
|
|
12
|
+
|
|
13
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
|
|
15
|
+
Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
See the License for the specific language governing permissions and
|
|
19
|
+
limitations under the License.
|
|
20
|
+
**/
|
|
21
|
+
var _default = 'javascript';
|
|
22
|
+
exports.default = _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
Copyright 2016 Split Software
|
|
8
|
+
|
|
9
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
you may not use this file except in compliance with the License.
|
|
11
|
+
You may obtain a copy of the License at
|
|
12
|
+
|
|
13
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
|
|
15
|
+
Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
See the License for the specific language governing permissions and
|
|
19
|
+
limitations under the License.
|
|
20
|
+
**/
|
|
21
|
+
var _default = 'nodejs';
|
|
22
|
+
exports.default = _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _constants = require("../constants");
|
|
7
|
+
|
|
8
|
+
function mode(key, mode) {
|
|
9
|
+
// Leaving the comparison as is, in case we change the mode name but not the setting.
|
|
10
|
+
if (key === 'localhost') return _constants.LOCALHOST_MODE;
|
|
11
|
+
if ([_constants.STANDALONE_MODE, _constants.PRODUCER_MODE, _constants.CONSUMER_MODE].indexOf(mode) === -1) throw Error('Invalid mode provided');
|
|
12
|
+
return mode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
var _default = mode;
|
|
16
|
+
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = generateRuntimeSettings;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
Copyright 2016 Split Software
|
|
8
|
+
|
|
9
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
you may not use this file except in compliance with the License.
|
|
11
|
+
You may obtain a copy of the License at
|
|
12
|
+
|
|
13
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
|
|
15
|
+
Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
See the License for the specific language governing permissions and
|
|
19
|
+
limitations under the License.
|
|
20
|
+
**/
|
|
21
|
+
function generateRuntimeSettings() {
|
|
22
|
+
return {
|
|
23
|
+
ip: false,
|
|
24
|
+
hostname: false
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.
|
|
6
|
+
exports.default = generateRuntimeSettings;
|
|
7
7
|
|
|
8
8
|
var _os = _interopRequireDefault(require("os"));
|
|
9
9
|
|
|
10
10
|
var _ip = _interopRequireDefault(require("ip"));
|
|
11
11
|
|
|
12
|
-
var _constants = require("
|
|
12
|
+
var _constants = require("../../constants");
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
Copyright
|
|
15
|
+
Copyright 2016 Split Software
|
|
16
16
|
|
|
17
17
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
18
18
|
you may not use this file except in compliance with the License.
|
|
@@ -26,10 +26,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
26
26
|
See the License for the specific language governing permissions and
|
|
27
27
|
limitations under the License.
|
|
28
28
|
**/
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
var isConsumerMode = settings.mode === _constants.CONSUMER_MODE; // If the values are not available, default to false (for standalone) or "unknown" (for consumer mode, to be used on Redis keys)
|
|
32
|
-
|
|
29
|
+
function generateRuntimeSettings(isIPAddressesEnabled, isConsumerMode) {
|
|
30
|
+
// If the values are not available, default to false (for standalone) or "unknown" (for consumer mode, to be used on Redis keys)
|
|
33
31
|
var ip = _ip.default.address() || (isConsumerMode ? _constants.UNKNOWN : false);
|
|
34
32
|
var hostname = _os.default.hostname() || (isConsumerMode ? _constants.UNKNOWN : false);
|
|
35
33
|
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
exports.__esModule = true;
|
|
4
|
-
exports.
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _logger = _interopRequireDefault(require("../../../utils/logger"));
|
|
5
9
|
|
|
6
|
-
var
|
|
10
|
+
var _isAvailable = _interopRequireDefault(require("../../../utils/localstorage/isAvailable"));
|
|
7
11
|
|
|
8
|
-
var _constants = require("
|
|
12
|
+
var _constants = require("../../../utils/constants");
|
|
9
13
|
|
|
10
14
|
/**
|
|
11
|
-
Copyright
|
|
15
|
+
Copyright 2016 Split Software
|
|
12
16
|
|
|
13
17
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
18
|
you may not use this file except in compliance with the License.
|
|
@@ -22,16 +26,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
22
26
|
See the License for the specific language governing permissions and
|
|
23
27
|
limitations under the License.
|
|
24
28
|
**/
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
function
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
_settings$storage =
|
|
31
|
-
|
|
32
|
-
type: _constants.STORAGE_MEMORY
|
|
33
|
-
} : _settings$storage;
|
|
34
|
-
var type = _settings$storage.type,
|
|
29
|
+
var log = (0, _logger.default)('splitio-settings');
|
|
30
|
+
|
|
31
|
+
var ParseStorageSettings = function ParseStorageSettings(settings) {
|
|
32
|
+
var mode = settings.mode,
|
|
33
|
+
_settings$storage = settings.storage,
|
|
34
|
+
_settings$storage$typ = _settings$storage.type,
|
|
35
|
+
type = _settings$storage$typ === void 0 ? _constants.STORAGE_MEMORY : _settings$storage$typ,
|
|
35
36
|
_settings$storage$opt = _settings$storage.options,
|
|
36
37
|
options = _settings$storage$opt === void 0 ? {} : _settings$storage$opt,
|
|
37
38
|
prefix = _settings$storage.prefix;
|
|
@@ -47,19 +48,19 @@ function validateStorage(settings) {
|
|
|
47
48
|
var fallbackToMemory = function fallbackToMemory() {
|
|
48
49
|
__originalType = type;
|
|
49
50
|
type = _constants.STORAGE_MEMORY;
|
|
50
|
-
}; // In localhost mode, fallback to Memory storage and track original
|
|
51
|
-
//
|
|
51
|
+
}; // In localhost mode, fallback to Memory storage and track original
|
|
52
|
+
// type to emit SDK_READY_FROM_CACHE if corresponds
|
|
52
53
|
|
|
53
54
|
|
|
54
|
-
if (mode === _constants.LOCALHOST_MODE && type === STORAGE_LOCALSTORAGE) {
|
|
55
|
+
if (mode === _constants.LOCALHOST_MODE && type === _constants.STORAGE_LOCALSTORAGE) {
|
|
55
56
|
fallbackToMemory();
|
|
56
57
|
} // If an invalid storage type is provided OR we want to use LOCALSTORAGE and
|
|
57
58
|
// it's not available, fallback into MEMORY
|
|
58
59
|
|
|
59
60
|
|
|
60
|
-
if (type !== _constants.STORAGE_MEMORY && type !== STORAGE_LOCALSTORAGE || type === STORAGE_LOCALSTORAGE && !(0,
|
|
61
|
+
if (type !== _constants.STORAGE_MEMORY && type !== _constants.STORAGE_LOCALSTORAGE || type === _constants.STORAGE_LOCALSTORAGE && !(0, _isAvailable.default)()) {
|
|
61
62
|
fallbackToMemory();
|
|
62
|
-
log.
|
|
63
|
+
log.warn('Invalid or unavailable storage. Fallbacking into MEMORY storage');
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
return {
|
|
@@ -68,4 +69,7 @@ function validateStorage(settings) {
|
|
|
68
69
|
prefix: prefix,
|
|
69
70
|
__originalType: __originalType
|
|
70
71
|
};
|
|
71
|
-
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
var _default = ParseStorageSettings;
|
|
75
|
+
exports.default = _default;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.
|
|
4
|
+
exports.default = void 0;
|
|
5
5
|
|
|
6
|
-
var _constants = require("
|
|
6
|
+
var _constants = require("../../constants");
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
Copyright
|
|
9
|
+
Copyright 2016 Split Software
|
|
10
10
|
|
|
11
11
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
12
|
you may not use this file except in compliance with the License.
|
|
@@ -20,14 +20,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
20
20
|
See the License for the specific language governing permissions and
|
|
21
21
|
limitations under the License.
|
|
22
22
|
**/
|
|
23
|
-
function
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
_settings$storage
|
|
27
|
-
_settings$storage = _settings$storage === void 0 ? {
|
|
28
|
-
type: _constants.STORAGE_MEMORY
|
|
29
|
-
} : _settings$storage;
|
|
30
|
-
var type = _settings$storage.type,
|
|
23
|
+
var ParseStorageSettings = function ParseStorageSettings(settings) {
|
|
24
|
+
var mode = settings.mode,
|
|
25
|
+
_settings$storage = settings.storage,
|
|
26
|
+
type = _settings$storage.type,
|
|
31
27
|
_settings$storage$opt = _settings$storage.options,
|
|
32
28
|
options = _settings$storage$opt === void 0 ? {} : _settings$storage$opt,
|
|
33
29
|
prefix = _settings$storage.prefix;
|
|
@@ -36,21 +32,17 @@ function validateStorage(settings) {
|
|
|
36
32
|
prefix += '.SPLITIO';
|
|
37
33
|
} else {
|
|
38
34
|
prefix = 'SPLITIO';
|
|
39
|
-
} //
|
|
35
|
+
} // In localhost mode we should force the user to use the MEMORY storage
|
|
40
36
|
|
|
41
37
|
|
|
38
|
+
if (mode === _constants.LOCALHOST_MODE) return {
|
|
39
|
+
type: _constants.STORAGE_MEMORY,
|
|
40
|
+
prefix: prefix
|
|
41
|
+
}; // In other cases we can have MEMORY or REDIS
|
|
42
|
+
|
|
42
43
|
switch (type) {
|
|
43
44
|
case _constants.STORAGE_REDIS:
|
|
44
45
|
{
|
|
45
|
-
// If passing REDIS storage in localhost or standalone mode, we log an error and fallback to MEMORY storage
|
|
46
|
-
if (mode === _constants.STANDALONE_MODE || mode === _constants.LOCALHOST_MODE) {
|
|
47
|
-
log.error('The provided REDIS storage is invalid for this mode. It requires consumer mode. Fallbacking into default MEMORY storage.');
|
|
48
|
-
return {
|
|
49
|
-
type: _constants.STORAGE_MEMORY,
|
|
50
|
-
prefix: prefix
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
46
|
var host = options.host,
|
|
55
47
|
port = options.port,
|
|
56
48
|
db = options.db,
|
|
@@ -88,14 +80,13 @@ function validateStorage(settings) {
|
|
|
88
80
|
case _constants.STORAGE_MEMORY:
|
|
89
81
|
default:
|
|
90
82
|
{
|
|
91
|
-
// If passing MEMORY storage in consumer mode, throw an error (no way to fallback to REDIS storage)
|
|
92
|
-
if (mode === _constants.CONSUMER_MODE) throw new Error('A REDIS storage is required on consumer mode'); // If passing an invalid storage type, log an error
|
|
93
|
-
|
|
94
|
-
if (type !== _constants.STORAGE_MEMORY) log.error("The provided '" + type + "' storage type is invalid. Fallbacking into default MEMORY storage.");
|
|
95
83
|
return {
|
|
96
84
|
type: _constants.STORAGE_MEMORY,
|
|
97
85
|
prefix: prefix
|
|
98
86
|
};
|
|
99
87
|
}
|
|
100
88
|
}
|
|
101
|
-
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
var _default = ParseStorageSettings;
|
|
92
|
+
exports.default = _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Given a list of conditions, it returns a boolean flagging if those conditions
|
|
8
|
+
* use segments matchers (rules & whitelists)
|
|
9
|
+
*/
|
|
10
|
+
function usesSegments(conditions) {
|
|
11
|
+
if (conditions === void 0) {
|
|
12
|
+
conditions = [];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
for (var i = 0; i < conditions.length; i++) {
|
|
16
|
+
var matchers = conditions[i].matcherGroup.matchers;
|
|
17
|
+
|
|
18
|
+
for (var j = 0; j < matchers.length; j++) {
|
|
19
|
+
if (matchers[j].matcherType === 'IN_SEGMENT') return true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var _default = usesSegments;
|
|
27
|
+
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.truncateTimeFrame = truncateTimeFrame;
|
|
5
|
+
var DEDUP_WINDOW_SIZE_MS = 3600 * 1000;
|
|
6
|
+
/**
|
|
7
|
+
* Truncates de time frame received with the time window.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
function truncateTimeFrame(timestampInMs) {
|
|
11
|
+
return timestampInMs - timestampInMs % DEDUP_WINDOW_SIZE_MS;
|
|
12
|
+
}
|