@splitsoftware/splitio 10.17.3-rc.3 → 10.17.3-rc.4
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 +3 -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 -16
- 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/services/getEventSource/node.js +18 -0
- package/{lib/platform → es/services}/getEventSource/package.json +0 -0
- package/es/services/getFetch/browser.js +4 -0
- package/es/services/getFetch/node.js +18 -0
- 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/services/request/options/node.js +28 -0
- 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/utils/settings/defaults/browser.js +12 -0
- package/es/utils/settings/defaults/node.js +21 -0
- 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/utils/settings/runtime/node.js +33 -0
- package/es/utils/settings/runtime/package.json +4 -0
- package/es/utils/settings/storage/browser.js +64 -0
- package/es/utils/settings/storage/node.js +86 -0
- 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 +155 -19
- 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/services/getEventSource/browser.js +8 -0
- package/lib/services/getEventSource/node.js +26 -0
- package/lib/services/getEventSource/package.json +4 -0
- package/lib/services/getFetch/browser.js +12 -0
- package/lib/services/getFetch/node.js +24 -0
- 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/services/request/options/node.js +37 -0
- 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 +8 -4
- 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/utils/settings/runtime/node.js +43 -0
- package/lib/utils/settings/runtime/package.json +4 -0
- package/lib/utils/settings/storage/browser.js +75 -0
- package/lib/utils/settings/storage/node.js +92 -0
- 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 +31 -30
- 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 +136 -13
- 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/src/services/getEventSource/browser.js +3 -0
- 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/services/request/options/node.js +30 -0
- 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/src/utils/settings/defaults/browser.js +12 -0
- package/src/utils/settings/defaults/node.js +21 -0
- 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/utils/settings/integrations/node.js +7 -0
- 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/utils/settings/runtime/node.js +34 -0
- package/src/utils/settings/runtime/package.json +4 -0
- package/src/utils/settings/storage/browser.js +70 -0
- package/src/{settings → utils/settings}/storage/node.js +28 -18
- 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 -66
- package/es/factory/node.js +0 -64
- package/es/platform/EventEmitter.js +0 -386
- package/es/platform/browser.js +0 -10
- package/es/platform/getEventSource/browser.js +0 -3
- package/es/platform/getEventSource/node.js +0 -19
- package/es/platform/getFetch/browser.js +0 -4
- package/es/platform/getFetch/node.js +0 -18
- package/es/platform/node.js +0 -12
- package/es/platform/request/options/node.js +0 -13
- package/es/settings/browser.js +0 -18
- package/es/settings/defaults/browser.js +0 -15
- package/es/settings/defaults/node.js +0 -24
- package/es/settings/defaults/version.js +0 -1
- package/es/settings/integrations/browser.js +0 -5
- package/es/settings/node.js +0 -17
- package/es/settings/storage/browser.js +0 -35
- package/es/settings/storage/node.js +0 -66
- package/lib/factory/browser.js +0 -70
- package/lib/factory/node.js +0 -68
- package/lib/platform/EventEmitter.js +0 -390
- package/lib/platform/browser.js +0 -13
- package/lib/platform/getEventSource/browser.js +0 -7
- package/lib/platform/getEventSource/node.js +0 -25
- package/lib/platform/getFetch/browser.js +0 -9
- package/lib/platform/getFetch/node.js +0 -23
- package/lib/platform/node.js +0 -16
- package/lib/platform/request/options/node.js +0 -18
- package/lib/settings/browser.js +0 -22
- package/lib/settings/defaults/browser.js +0 -18
- package/lib/settings/defaults/node.js +0 -27
- package/lib/settings/defaults/version.js +0 -4
- package/lib/settings/integrations/browser.js +0 -9
- package/lib/settings/node.js +0 -21
- package/lib/settings/storage/browser.js +0 -39
- package/lib/settings/storage/node.js +0 -70
- package/server/package.json +0 -5
- package/src/.DS_Store +0 -0
- package/src/factory/browser.js +0 -83
- package/src/factory/node.js +0 -80
- 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/platform/request/options/node.js +0 -15
- package/src/settings/.DS_Store +0 -0
- package/src/settings/browser.js +0 -20
- package/src/settings/defaults/version.js +0 -1
- package/src/settings/integrations/browser.js +0 -6
- package/src/settings/node.js +0 -19
- package/src/settings/storage/browser.js +0 -49
- package/types/client/index.d.ts +0 -14
- package/types/server/index.d.ts +0 -20
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
Copyright 2016 Split Software
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
**/
|
|
16
|
+
|
|
17
|
+
import logFactory from '../../../utils/logger';
|
|
18
|
+
const log = logFactory('splitio-settings');
|
|
19
|
+
import isLocalStorageAvailable from '../../../utils/localstorage/isAvailable';
|
|
20
|
+
import {
|
|
21
|
+
LOCALHOST_MODE,
|
|
22
|
+
STORAGE_MEMORY,
|
|
23
|
+
STORAGE_LOCALSTORAGE
|
|
24
|
+
} from '../../../utils/constants';
|
|
25
|
+
|
|
26
|
+
const ParseStorageSettings = settings => {
|
|
27
|
+
let {
|
|
28
|
+
mode,
|
|
29
|
+
storage: {
|
|
30
|
+
type = STORAGE_MEMORY,
|
|
31
|
+
options = {},
|
|
32
|
+
prefix
|
|
33
|
+
},
|
|
34
|
+
} = settings;
|
|
35
|
+
let __originalType;
|
|
36
|
+
|
|
37
|
+
if (prefix) {
|
|
38
|
+
prefix += '.SPLITIO';
|
|
39
|
+
} else {
|
|
40
|
+
prefix = 'SPLITIO';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const fallbackToMemory = () => {
|
|
44
|
+
__originalType = type;
|
|
45
|
+
type = STORAGE_MEMORY;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// In localhost mode, fallback to Memory storage and track original
|
|
49
|
+
// type to emit SDK_READY_FROM_CACHE if corresponds
|
|
50
|
+
if (mode === LOCALHOST_MODE && type === STORAGE_LOCALSTORAGE) {
|
|
51
|
+
fallbackToMemory();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// If an invalid storage type is provided OR we want to use LOCALSTORAGE and
|
|
55
|
+
// it's not available, fallback into MEMORY
|
|
56
|
+
if (type !== STORAGE_MEMORY && type !== STORAGE_LOCALSTORAGE ||
|
|
57
|
+
type === STORAGE_LOCALSTORAGE && !isLocalStorageAvailable()) {
|
|
58
|
+
fallbackToMemory();
|
|
59
|
+
log.warn('Invalid or unavailable storage. Fallbacking into MEMORY storage');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
type,
|
|
64
|
+
options,
|
|
65
|
+
prefix,
|
|
66
|
+
__originalType
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export default ParseStorageSettings;
|
|
@@ -1,14 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
Copyright 2016 Split Software
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
**/
|
|
16
|
+
import { LOCALHOST_MODE, STORAGE_MEMORY, STORAGE_REDIS } from '../../constants';
|
|
17
|
+
|
|
18
|
+
const ParseStorageSettings = (settings) => {
|
|
4
19
|
let {
|
|
5
|
-
log,
|
|
6
20
|
mode,
|
|
7
21
|
storage: {
|
|
8
22
|
type,
|
|
9
23
|
options = {},
|
|
10
24
|
prefix
|
|
11
|
-
}
|
|
25
|
+
}
|
|
12
26
|
} = settings;
|
|
13
27
|
|
|
14
28
|
if (prefix) {
|
|
@@ -17,17 +31,15 @@ export function validateStorage(settings) {
|
|
|
17
31
|
prefix = 'SPLITIO';
|
|
18
32
|
}
|
|
19
33
|
|
|
20
|
-
//
|
|
34
|
+
// In localhost mode we should force the user to use the MEMORY storage
|
|
35
|
+
if (mode === LOCALHOST_MODE) return {
|
|
36
|
+
type: STORAGE_MEMORY,
|
|
37
|
+
prefix
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// In other cases we can have MEMORY or REDIS
|
|
21
41
|
switch (type) {
|
|
22
42
|
case STORAGE_REDIS: {
|
|
23
|
-
// If passing REDIS storage in localhost or standalone mode, we log an error and fallback to MEMORY storage
|
|
24
|
-
if (mode === STANDALONE_MODE || mode === LOCALHOST_MODE) {
|
|
25
|
-
log.error('The provided REDIS storage is invalid for this mode. It requires consumer mode. Fallbacking into default MEMORY storage.');
|
|
26
|
-
return {
|
|
27
|
-
type: STORAGE_MEMORY,
|
|
28
|
-
prefix
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
43
|
let {
|
|
32
44
|
host,
|
|
33
45
|
port,
|
|
@@ -72,14 +84,12 @@ export function validateStorage(settings) {
|
|
|
72
84
|
// For now, we don't have modifiers or settings for MEMORY in NodeJS
|
|
73
85
|
case STORAGE_MEMORY:
|
|
74
86
|
default: {
|
|
75
|
-
// If passing MEMORY storage in consumer mode, throw an error (no way to fallback to REDIS storage)
|
|
76
|
-
if (mode === CONSUMER_MODE) throw new Error('A REDIS storage is required on consumer mode');
|
|
77
|
-
// If passing an invalid storage type, log an error
|
|
78
|
-
if (type !== STORAGE_MEMORY) log.error(`The provided '${type}' storage type is invalid. Fallbacking into default MEMORY storage.`);
|
|
79
87
|
return {
|
|
80
88
|
type: STORAGE_MEMORY,
|
|
81
89
|
prefix
|
|
82
90
|
};
|
|
83
91
|
}
|
|
84
92
|
}
|
|
85
|
-
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export default ParseStorageSettings;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Given a list of conditions, it returns a boolean flagging if those conditions
|
|
3
|
+
* use segments matchers (rules & whitelists)
|
|
4
|
+
*/
|
|
5
|
+
function usesSegments(conditions = []) {
|
|
6
|
+
for (let i = 0; i < conditions.length; i++) {
|
|
7
|
+
const matchers = conditions[i].matcherGroup.matchers;
|
|
8
|
+
|
|
9
|
+
for (let j = 0; j < matchers.length; j++) {
|
|
10
|
+
if (matchers[j].matcherType === 'IN_SEGMENT') return true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default usesSegments;
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
Copyright 2016 Split Software
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
**/
|
|
16
|
+
|
|
17
|
+
import { uniqueId } from '../lang';
|
|
18
|
+
import { Logger } from '../logger/LoggerFactory';
|
|
19
|
+
import timer from './timer';
|
|
20
|
+
import thenable from '../promise/thenable';
|
|
21
|
+
|
|
22
|
+
// logger to be used on this module
|
|
23
|
+
const logger = new Logger('[TIME TRACKER]', {
|
|
24
|
+
showLevel: false
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Map we will use for storing timers data
|
|
28
|
+
const timers = {};
|
|
29
|
+
// Tasks constants
|
|
30
|
+
const CONSTANTS = {
|
|
31
|
+
SDK_READY: 'Getting ready - Split SDK',
|
|
32
|
+
SDK_GET_TREATMENT: 'SDK - Get Treatment',
|
|
33
|
+
SDK_GET_TREATMENTS: 'SDK - Get Treatments',
|
|
34
|
+
SDK_GET_TREATMENT_WITH_CONFIG: 'SDK - Get Treatment with config',
|
|
35
|
+
SDK_GET_TREATMENTS_WITH_CONFIG: 'SDK - Get Treatments with config',
|
|
36
|
+
SPLITS_READY: 'Getting ready - Splits',
|
|
37
|
+
SEGMENTS_READY: 'Getting ready - Segments',
|
|
38
|
+
METRICS_PUSH: 'Pushing - Metrics',
|
|
39
|
+
IMPRESSIONS_PUSH: 'Pushing - Impressions',
|
|
40
|
+
EVENTS_PUSH: 'Pushing - Events',
|
|
41
|
+
MY_SEGMENTS_FETCH: 'Fetching - My Segments',
|
|
42
|
+
SEGMENTS_FETCH: 'Fetching - Segments',
|
|
43
|
+
SPLITS_FETCH: 'Fetching - Splits'
|
|
44
|
+
};
|
|
45
|
+
// Tasks callbacks, if any
|
|
46
|
+
const CALLBACKS = {
|
|
47
|
+
[CONSTANTS.SDK_READY]: {
|
|
48
|
+
collector: 'client',
|
|
49
|
+
method: 'ready'
|
|
50
|
+
},
|
|
51
|
+
[CONSTANTS.SDK_GET_TREATMENT]: {
|
|
52
|
+
collector: 'client',
|
|
53
|
+
method: 'getTreatment'
|
|
54
|
+
},
|
|
55
|
+
[CONSTANTS.SDK_GET_TREATMENTS]: {
|
|
56
|
+
collector: 'client',
|
|
57
|
+
method: 'getTreatments'
|
|
58
|
+
},
|
|
59
|
+
[CONSTANTS.SDK_GET_TREATMENT_WITH_CONFIG]: {
|
|
60
|
+
collector: 'client',
|
|
61
|
+
method: 'getTreatmentWithConfig'
|
|
62
|
+
},
|
|
63
|
+
[CONSTANTS.SDK_GET_TREATMENTS_WITH_CONFIG]: {
|
|
64
|
+
collector: 'client',
|
|
65
|
+
method: 'getTreatmentsWithConfig'
|
|
66
|
+
},
|
|
67
|
+
[CONSTANTS.MY_SEGMENTS_FETCH]: {
|
|
68
|
+
collector: 'mySegments',
|
|
69
|
+
method: 'latency'
|
|
70
|
+
},
|
|
71
|
+
[CONSTANTS.SEGMENTS_FETCH]: {
|
|
72
|
+
collector: 'segmentChanges',
|
|
73
|
+
method: 'latency'
|
|
74
|
+
},
|
|
75
|
+
[CONSTANTS.SPLITS_FETCH]: {
|
|
76
|
+
collector: 'splitChanges',
|
|
77
|
+
method: 'latency'
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Generates the timer keys using the task name and a modifier, if any.
|
|
82
|
+
* @param {string} task - The task name
|
|
83
|
+
* @param {string} modifier - (optional) The modifier, if any.
|
|
84
|
+
* @return {string} The generated timer key
|
|
85
|
+
*/
|
|
86
|
+
const generateTimerKey = (task, modifier) => typeof modifier === 'string' ? task + modifier : task;
|
|
87
|
+
/**
|
|
88
|
+
* Given the collectors map, it returns the specific collector for a given task.
|
|
89
|
+
*
|
|
90
|
+
* @param {string} task - The task name
|
|
91
|
+
* @param {Object} collectors - The collectors map
|
|
92
|
+
*/
|
|
93
|
+
const getCollectorForTask = (task, collectors) => {
|
|
94
|
+
const callbackData = CALLBACKS[task];
|
|
95
|
+
|
|
96
|
+
if (callbackData && collectors) return collectors[callbackData.collector];
|
|
97
|
+
|
|
98
|
+
return false;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Given a collector and a task, returns the callback function that should be called when we stop the timer.
|
|
102
|
+
*
|
|
103
|
+
* @param {string} task - The task name
|
|
104
|
+
* @param {Object} collector - The collector object for the task
|
|
105
|
+
*/
|
|
106
|
+
const getCallbackForTask = (task, collector) => {
|
|
107
|
+
const callbackData = CALLBACKS[task];
|
|
108
|
+
|
|
109
|
+
if (callbackData && collector) return collector[callbackData.method];
|
|
110
|
+
|
|
111
|
+
return false;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const TrackerAPI = {
|
|
115
|
+
/**
|
|
116
|
+
* "Private" method, used to attach count/countException and stop callbacks to a promise.
|
|
117
|
+
*
|
|
118
|
+
* @param {Promise} promise - The promise we want to attach the callbacks.
|
|
119
|
+
* @param {string} task - The name of the task.
|
|
120
|
+
* @param {string} modifier - (optional) The modifier for the task, if any.
|
|
121
|
+
*/
|
|
122
|
+
__attachToPromise(promise, task, collector, modifier) {
|
|
123
|
+
return promise.then(resp => {
|
|
124
|
+
this.stop(task, modifier);
|
|
125
|
+
|
|
126
|
+
if (collector && collector.count) collector.count(resp.status);
|
|
127
|
+
|
|
128
|
+
return resp;
|
|
129
|
+
})
|
|
130
|
+
.catch(err => {
|
|
131
|
+
this.stop(task, modifier);
|
|
132
|
+
|
|
133
|
+
if (collector && collector.countException) collector.countException();
|
|
134
|
+
|
|
135
|
+
throw err;
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
/**
|
|
139
|
+
* Starts tracking the time for a given task. All tasks tracked are considered "unique" because
|
|
140
|
+
* there may be multiple SDK instances tracking a "generic" task, making any task non-generic.
|
|
141
|
+
*
|
|
142
|
+
* @param {string} task - The task we are starting.
|
|
143
|
+
* @param {Object} collectors - The collectors map.
|
|
144
|
+
* @param {Promise} promise - (optional) The promise we are tracking.
|
|
145
|
+
* @return {Function | Promise} The stop function for this specific task or the promise received with the callbacks registered.
|
|
146
|
+
*/
|
|
147
|
+
start(task, collectors, promise) {
|
|
148
|
+
const taskUniqueId = uniqueId();
|
|
149
|
+
const taskCollector = getCollectorForTask(task, collectors);
|
|
150
|
+
let result;
|
|
151
|
+
|
|
152
|
+
// If we are registering a promise with this task, we should count the status and the exceptions as well
|
|
153
|
+
// as stopping the task when the promise resolves. Then return the promise
|
|
154
|
+
if (thenable(promise)) {
|
|
155
|
+
result = this.__attachToPromise(promise, task, taskCollector, taskUniqueId);
|
|
156
|
+
} else {
|
|
157
|
+
// If not, we return the stop function, as it will be stopped manually.
|
|
158
|
+
result = this.stop.bind(this, task, taskUniqueId);
|
|
159
|
+
if (CALLBACKS[task] && !taskCollector) {
|
|
160
|
+
// and provide a way for a defered setup of the collector, if needed.
|
|
161
|
+
result.setCollectorForTask = this.setCollectorForTask.bind(this, task, taskUniqueId);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// We start the timer, with an uniqueId attached to it's name, and save tracking info for this task.
|
|
166
|
+
const trackingKey = generateTimerKey(task, taskUniqueId);
|
|
167
|
+
const cb = getCallbackForTask(task, taskCollector);
|
|
168
|
+
timers[trackingKey] = {
|
|
169
|
+
cb,
|
|
170
|
+
timer: timer()
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
return result;
|
|
174
|
+
},
|
|
175
|
+
/**
|
|
176
|
+
* Setup the collector for a task that reports metrics.
|
|
177
|
+
*
|
|
178
|
+
* @param {string} task - The task name
|
|
179
|
+
* @param {string} taskUniqueId - The unique identifier for this task
|
|
180
|
+
* @param {Object} collectors - The collectors map.
|
|
181
|
+
*/
|
|
182
|
+
setCollectorForTask(task, taskUniqueId, collectors) {
|
|
183
|
+
const taskCollector = getCollectorForTask(task, collectors);
|
|
184
|
+
|
|
185
|
+
if (taskCollector) {
|
|
186
|
+
const trackingKey = generateTimerKey(task, taskUniqueId);
|
|
187
|
+
timers[trackingKey].cb = getCallbackForTask(task, taskCollector);
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
/**
|
|
191
|
+
* Stops the tracking of a given task.
|
|
192
|
+
*
|
|
193
|
+
* @param {string} task - The task we are starting.
|
|
194
|
+
* @param {string} modifier - (optional) The modifier for that specific task.
|
|
195
|
+
*/
|
|
196
|
+
stop(task, modifier) {
|
|
197
|
+
const timerName = generateTimerKey(task, modifier);
|
|
198
|
+
const timerData = timers[timerName];
|
|
199
|
+
if (timerData) {
|
|
200
|
+
// Stop the timer and round result for readability.
|
|
201
|
+
const et = timerData.timer();
|
|
202
|
+
logger.debug(`[${task}] took ${et}ms to finish.`);
|
|
203
|
+
|
|
204
|
+
// Check if we have a tracker callback.
|
|
205
|
+
if (timerData.cb) {
|
|
206
|
+
// If we have a callback, we call it with the elapsed time of the task and then delete the reference.
|
|
207
|
+
timerData.cb(et);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Remove the task tracking reference.
|
|
211
|
+
delete timers[timerName];
|
|
212
|
+
|
|
213
|
+
return et;
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
/**
|
|
217
|
+
* The constants shortcut for the task names.
|
|
218
|
+
*/
|
|
219
|
+
TaskNames: CONSTANTS
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// Our "time tracker" API
|
|
223
|
+
export default TrackerAPI;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
Copyright 2016 Split Software
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
**/
|
|
16
|
+
|
|
17
|
+
import now from '../now';
|
|
18
|
+
|
|
19
|
+
function start() {
|
|
20
|
+
const st = now();
|
|
21
|
+
|
|
22
|
+
return function stop() {
|
|
23
|
+
return Math.round( now() - st );
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default start;
|
package/types/splitio.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Type definitions for Javascript and Node Split Software SDK
|
|
1
|
+
// Type definitions for Javascript and Node Split Software SDK v8.1.0
|
|
2
2
|
// Project: http://www.split.io/
|
|
3
3
|
// Definitions by: Nico Zelaya <https://github.com/NicoZelaya/>
|
|
4
4
|
|
|
@@ -336,8 +336,7 @@ interface INodeBasicSettings extends ISharedSettings {
|
|
|
336
336
|
prefix?: string
|
|
337
337
|
},
|
|
338
338
|
/**
|
|
339
|
-
* The SDK mode. Possible values are "standalone"
|
|
340
|
-
* and "consumer", which must be set when using an asynchronous storage, like 'REDIS'. For "localhost" mode, use "localhost" as authorizationKey.
|
|
339
|
+
* The SDK mode. Possible values are "standalone" (which is the default) and "consumer". For "localhost" mode, use "localhost" as authorizationKey.
|
|
341
340
|
* @property {SDKMode} mode
|
|
342
341
|
* @default standalone
|
|
343
342
|
*/
|
|
@@ -1021,15 +1020,7 @@ declare namespace SplitIO {
|
|
|
1021
1020
|
* @default SPLITIO
|
|
1022
1021
|
*/
|
|
1023
1022
|
prefix?: string
|
|
1024
|
-
}
|
|
1025
|
-
/**
|
|
1026
|
-
* The SDK mode. When using the default 'MEMORY' storage, the only possible value is "standalone", which is the default.
|
|
1027
|
-
* For "localhost" mode, use "localhost" as authorizationKey.
|
|
1028
|
-
*
|
|
1029
|
-
* @property {'standalone'} mode
|
|
1030
|
-
* @default standalone
|
|
1031
|
-
*/
|
|
1032
|
-
mode?: 'standalone'
|
|
1023
|
+
}
|
|
1033
1024
|
}
|
|
1034
1025
|
/**
|
|
1035
1026
|
* Settings interface with async storage for SDK instances created on NodeJS.
|
|
@@ -1041,7 +1032,7 @@ declare namespace SplitIO {
|
|
|
1041
1032
|
interface INodeAsyncSettings extends INodeBasicSettings {
|
|
1042
1033
|
storage: {
|
|
1043
1034
|
/**
|
|
1044
|
-
*
|
|
1035
|
+
* Redis storage type to be instantiated by the SDK.
|
|
1045
1036
|
* @property {NodeAsyncStorage} type
|
|
1046
1037
|
*/
|
|
1047
1038
|
type: NodeAsyncStorage,
|
|
@@ -1056,15 +1047,7 @@ declare namespace SplitIO {
|
|
|
1056
1047
|
* @default SPLITIO
|
|
1057
1048
|
*/
|
|
1058
1049
|
prefix?: string
|
|
1059
|
-
}
|
|
1060
|
-
/**
|
|
1061
|
-
* The SDK mode. When using 'REDIS' storage type, the only possible value is "consumer", which is required.
|
|
1062
|
-
*
|
|
1063
|
-
* @see {@link https://help.split.io/hc/en-us/articles/360020564931-Node-js-SDK#state-sharing-redis-integration}
|
|
1064
|
-
*
|
|
1065
|
-
* @property {'consumer'} mode
|
|
1066
|
-
*/
|
|
1067
|
-
mode: 'consumer'
|
|
1050
|
+
}
|
|
1068
1051
|
}
|
|
1069
1052
|
/**
|
|
1070
1053
|
* This represents the interface for the SDK instance with synchronous storage.
|
package/client/package.json
DELETED
package/es/factory/browser.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { splitApiFactory } from '@splitsoftware/splitio-commons/esm/services/splitApi';
|
|
2
|
-
import { syncManagerOnlineFactory } from '@splitsoftware/splitio-commons/esm/sync/syncManagerOnline';
|
|
3
|
-
import { pushManagerFactory } from '@splitsoftware/splitio-commons/esm/sync/streaming/pushManager';
|
|
4
|
-
import { pollingManagerCSFactory } from '@splitsoftware/splitio-commons/esm/sync/polling/pollingManagerCS';
|
|
5
|
-
import { InLocalStorage } from '@splitsoftware/splitio-commons/esm/storages/inLocalStorage';
|
|
6
|
-
import { InMemoryStorageCSFactory } from '@splitsoftware/splitio-commons/esm/storages/inMemory/InMemoryStorageCS';
|
|
7
|
-
import { sdkManagerFactory } from '@splitsoftware/splitio-commons/esm/sdkManager';
|
|
8
|
-
import { sdkClientMethodCSFactory } from '@splitsoftware/splitio-commons/esm/sdkClient/sdkClientMethodCSWithTT';
|
|
9
|
-
import { impressionObserverCSFactory } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/impressionObserverCS';
|
|
10
|
-
import { integrationsManagerFactory } from '@splitsoftware/splitio-commons/esm/integrations/browser';
|
|
11
|
-
import { __InLocalStorageMockFactory } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/storage/storageCS';
|
|
12
|
-
import { sdkFactory } from '@splitsoftware/splitio-commons/esm/sdkFactory';
|
|
13
|
-
import { LOCALHOST_MODE, STORAGE_LOCALSTORAGE } from '@splitsoftware/splitio-commons/esm/utils/constants';
|
|
14
|
-
import { shouldAddPt } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/utils';
|
|
15
|
-
import { settingsFactory } from '../settings/browser';
|
|
16
|
-
import { platform, SignalListener } from '../platform';
|
|
17
|
-
var syncManagerOnlineCSFactory = syncManagerOnlineFactory(pollingManagerCSFactory, pushManagerFactory);
|
|
18
|
-
function getStorage(settings) {
|
|
19
|
-
return settings.storage.type === STORAGE_LOCALSTORAGE ?
|
|
20
|
-
InLocalStorage(settings.storage)
|
|
21
|
-
: settings.storage.__originalType === STORAGE_LOCALSTORAGE ?
|
|
22
|
-
__InLocalStorageMockFactory
|
|
23
|
-
: InMemoryStorageCSFactory;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings
|
|
28
|
-
*/
|
|
29
|
-
function getModules(settings) {
|
|
30
|
-
var modules = {
|
|
31
|
-
settings: settings,
|
|
32
|
-
platform: platform,
|
|
33
|
-
storageFactory: getStorage(settings),
|
|
34
|
-
splitApiFactory: splitApiFactory,
|
|
35
|
-
syncManagerFactory: syncManagerOnlineCSFactory,
|
|
36
|
-
sdkManagerFactory: sdkManagerFactory,
|
|
37
|
-
sdkClientMethodFactory: sdkClientMethodCSFactory,
|
|
38
|
-
SignalListener: SignalListener,
|
|
39
|
-
impressionListener: settings.impressionListener,
|
|
40
|
-
integrationsManagerFactory: settings.integrations && settings.integrations.length > 0 ? integrationsManagerFactory.bind(null, settings.integrations) : undefined,
|
|
41
|
-
impressionsObserverFactory: shouldAddPt(settings) ? impressionObserverCSFactory : undefined,
|
|
42
|
-
};
|
|
43
|
-
switch (settings.mode) {
|
|
44
|
-
case LOCALHOST_MODE:
|
|
45
|
-
modules.splitApiFactory = undefined;
|
|
46
|
-
modules.syncManagerFactory = settings.sync.localhostMode;
|
|
47
|
-
modules.SignalListener = undefined;
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
return modules;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* SplitFactory for client-side.
|
|
54
|
-
*
|
|
55
|
-
* @param {SplitIO.IBrowserSettings} config configuration object used to instantiate the SDK
|
|
56
|
-
* @param {Function=} __updateModules optional function that lets redefine internal SDK modules. Use with
|
|
57
|
-
* caution since, unlike `config`, this param is not validated neither considered part of the public API.
|
|
58
|
-
* @throws Will throw an error if the provided config is invalid.
|
|
59
|
-
*/
|
|
60
|
-
export function SplitFactory(config, __updateModules) {
|
|
61
|
-
var settings = settingsFactory(config);
|
|
62
|
-
var modules = getModules(settings);
|
|
63
|
-
if (__updateModules)
|
|
64
|
-
__updateModules(modules);
|
|
65
|
-
return sdkFactory(modules);
|
|
66
|
-
}
|
package/es/factory/node.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { splitApiFactory } from '@splitsoftware/splitio-commons/esm/services/splitApi';
|
|
2
|
-
import { syncManagerOnlineFactory } from '@splitsoftware/splitio-commons/esm/sync/syncManagerOnline';
|
|
3
|
-
import { pushManagerFactory } from '@splitsoftware/splitio-commons/esm/sync/streaming/pushManager';
|
|
4
|
-
import { pollingManagerSSFactory } from '@splitsoftware/splitio-commons/esm/sync/polling/pollingManagerSS';
|
|
5
|
-
import { InRedisStorage } from '@splitsoftware/splitio-commons/esm/storages/inRedis';
|
|
6
|
-
import { InMemoryStorageFactory } from '@splitsoftware/splitio-commons/esm/storages/inMemory/InMemoryStorage';
|
|
7
|
-
import { sdkManagerFactory } from '@splitsoftware/splitio-commons/esm/sdkManager';
|
|
8
|
-
import { sdkClientMethodFactory } from '@splitsoftware/splitio-commons/esm/sdkClient/sdkClientMethod';
|
|
9
|
-
import { impressionObserverSSFactory } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/impressionObserverSS';
|
|
10
|
-
import { sdkFactory } from '@splitsoftware/splitio-commons/esm/sdkFactory';
|
|
11
|
-
import { CONSUMER_MODE, LOCALHOST_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
|
|
12
|
-
import { shouldAddPt } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/utils';
|
|
13
|
-
import { settingsFactory } from '../settings/node';
|
|
14
|
-
import { platform, SignalListener } from '../platform';
|
|
15
|
-
var syncManagerOnlineSSFactory = syncManagerOnlineFactory(pollingManagerSSFactory, pushManagerFactory);
|
|
16
|
-
function getStorage(settings) {
|
|
17
|
-
return settings.storage.type === 'REDIS' ?
|
|
18
|
-
InRedisStorage(settings.storage) :
|
|
19
|
-
InMemoryStorageFactory;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings
|
|
24
|
-
*/
|
|
25
|
-
function getModules(settings) {
|
|
26
|
-
var modules = {
|
|
27
|
-
settings: settings,
|
|
28
|
-
platform: platform,
|
|
29
|
-
storageFactory: getStorage(settings),
|
|
30
|
-
splitApiFactory: splitApiFactory,
|
|
31
|
-
syncManagerFactory: syncManagerOnlineSSFactory,
|
|
32
|
-
sdkManagerFactory: sdkManagerFactory,
|
|
33
|
-
sdkClientMethodFactory: sdkClientMethodFactory,
|
|
34
|
-
SignalListener: SignalListener,
|
|
35
|
-
impressionListener: settings.impressionListener,
|
|
36
|
-
impressionsObserverFactory: shouldAddPt(settings) ? impressionObserverSSFactory : undefined,
|
|
37
|
-
};
|
|
38
|
-
switch (settings.mode) {
|
|
39
|
-
case LOCALHOST_MODE:
|
|
40
|
-
modules.splitApiFactory = undefined;
|
|
41
|
-
modules.syncManagerFactory = settings.sync.localhostMode;
|
|
42
|
-
modules.SignalListener = undefined;
|
|
43
|
-
break;
|
|
44
|
-
case CONSUMER_MODE:
|
|
45
|
-
modules.syncManagerFactory = undefined;
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
return modules;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* SplitFactory for server-side.
|
|
52
|
-
*
|
|
53
|
-
* @param {SplitIO.INodeSettings | SplitIO.INodeAsyncSettings} config configuration object used to instantiate the SDK
|
|
54
|
-
* @param {Function=} __updateModules optional function that lets redefine internal SDK modules. Use with
|
|
55
|
-
* caution since, unlike `config`, this param is not validated neither considered part of the public API.
|
|
56
|
-
* @throws Will throw an error if the provided config is invalid.
|
|
57
|
-
*/
|
|
58
|
-
export function SplitFactory(config, __updateModules) {
|
|
59
|
-
var settings = settingsFactory(config);
|
|
60
|
-
var modules = getModules(settings);
|
|
61
|
-
if (__updateModules)
|
|
62
|
-
__updateModules(modules);
|
|
63
|
-
return sdkFactory(modules);
|
|
64
|
-
}
|