@splitsoftware/splitio 10.17.2 → 10.17.3-rc.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/client/package.json +5 -0
- package/es/factory/browser.js +66 -0
- package/es/factory/node.js +64 -0
- package/es/{client → factory}/package.json +0 -0
- package/es/index.js +16 -132
- package/es/platform/EventEmitter.js +386 -0
- package/es/platform/browser.js +10 -0
- package/es/platform/getEventSource/browser.js +3 -0
- package/es/platform/getEventSource/node.js +19 -0
- package/es/{impressions/observer → platform/getEventSource}/package.json +0 -0
- package/es/platform/getFetch/browser.js +4 -0
- package/es/platform/getFetch/node.js +18 -0
- package/es/{integrations → platform/getFetch}/package.json +0 -0
- package/es/platform/node.js +12 -0
- package/es/{listeners → platform}/package.json +0 -0
- package/es/platform/request/options/node.js +13 -0
- package/es/settings/browser.js +18 -0
- package/es/settings/defaults/browser.js +15 -0
- package/es/settings/defaults/node.js +24 -0
- package/es/settings/defaults/version.js +1 -0
- package/es/settings/integrations/browser.js +5 -0
- package/es/settings/node.js +17 -0
- package/es/{producer/offline → settings}/package.json +0 -0
- package/es/settings/storage/browser.js +35 -0
- package/es/settings/storage/node.js +66 -0
- package/es/umd.js +2 -1
- package/lib/factory/browser.js +70 -0
- package/lib/factory/node.js +68 -0
- package/{es/producer → lib/factory}/package.json +0 -0
- package/lib/index.js +19 -155
- package/lib/platform/EventEmitter.js +390 -0
- package/lib/platform/browser.js +13 -0
- package/lib/platform/getEventSource/browser.js +7 -0
- package/lib/platform/getEventSource/node.js +25 -0
- package/{es/services → lib/platform}/getEventSource/package.json +0 -0
- package/lib/platform/getFetch/browser.js +9 -0
- package/lib/platform/getFetch/node.js +23 -0
- package/{es/services → lib/platform}/getFetch/package.json +0 -0
- package/lib/platform/node.js +16 -0
- package/{es/services/request/options → lib/platform}/package.json +0 -0
- package/lib/platform/request/options/node.js +18 -0
- package/lib/settings/browser.js +22 -0
- package/lib/settings/defaults/browser.js +18 -0
- package/lib/settings/defaults/node.js +27 -0
- package/lib/settings/defaults/version.js +4 -0
- package/lib/settings/integrations/browser.js +9 -0
- package/lib/settings/node.js +21 -0
- package/{es/services/splitChanges/offline → lib/settings}/package.json +0 -0
- package/lib/settings/storage/browser.js +39 -0
- package/lib/settings/storage/node.js +70 -0
- package/lib/umd.js +4 -8
- package/package.json +30 -31
- package/server/package.json +5 -0
- package/src/.DS_Store +0 -0
- package/src/factory/browser.js +83 -0
- package/src/factory/node.js +80 -0
- package/{es/storage/SegmentCache/InMemory → src/factory}/package.json +0 -0
- package/src/index.js +13 -136
- package/src/{sync/SSEHandler → platform}/.DS_Store +0 -0
- package/src/platform/EventEmitter.js +443 -0
- package/src/platform/browser.js +12 -0
- package/{es/services → src/platform}/getEventSource/browser.js +2 -2
- package/src/{services → platform}/getEventSource/node.js +2 -2
- package/{es/storage → src/platform/getEventSource}/package.json +0 -0
- package/src/{services → platform}/getFetch/browser.js +2 -2
- package/src/{services → platform}/getFetch/node.js +1 -1
- package/{es/sync/PushManager/pushRequirements → src/platform/getFetch}/package.json +0 -0
- package/src/platform/node.js +14 -0
- package/{es/sync/SegmentUpdateWorker → src/platform}/package.json +0 -0
- package/src/platform/request/options/node.js +15 -0
- package/src/{listeners → settings}/.DS_Store +0 -0
- package/src/settings/browser.js +20 -0
- package/{lib/utils → src}/settings/defaults/browser.js +6 -6
- package/{lib/utils → src}/settings/defaults/node.js +6 -6
- package/src/settings/defaults/version.js +1 -0
- package/src/settings/integrations/browser.js +6 -0
- package/src/settings/node.js +19 -0
- package/{es/sync → src/settings}/package.json +0 -0
- package/src/settings/storage/browser.js +49 -0
- package/src/{utils/settings → settings}/storage/node.js +18 -28
- package/src/umd.js +1 -0
- package/types/client/index.d.ts +14 -0
- package/types/server/index.d.ts +20 -0
- package/types/splitio.d.ts +22 -5
- package/es/client/attributesDecoration.js +0 -116
- package/es/client/browser.js +0 -39
- package/es/client/client.js +0 -155
- package/es/client/inputValidation.js +0 -117
- package/es/client/node.js +0 -6
- package/es/engine/combiners/and.js +0 -54
- package/es/engine/combiners/ifelseif.js +0 -73
- package/es/engine/condition/index.js +0 -62
- package/es/engine/convertions/index.js +0 -29
- package/es/engine/engine/index.js +0 -60
- package/es/engine/engine/legacy.js +0 -77
- package/es/engine/engine/murmur3/common.js +0 -40
- package/es/engine/engine/murmur3/murmur3.js +0 -83
- package/es/engine/engine/murmur3/murmur3_128.js +0 -250
- package/es/engine/engine/murmur3/murmur3_128_x86.js +0 -183
- package/es/engine/engine/murmur3/murmur3_64.js +0 -52
- package/es/engine/engine/murmur3/utfx.js +0 -112
- package/es/engine/evaluator/index.js +0 -111
- package/es/engine/index.js +0 -112
- package/es/engine/matchers/all.js +0 -32
- package/es/engine/matchers/between.js +0 -35
- package/es/engine/matchers/boolean.js +0 -35
- package/es/engine/matchers/cont_all.js +0 -51
- package/es/engine/matchers/cont_any.js +0 -47
- package/es/engine/matchers/cont_str.js +0 -38
- package/es/engine/matchers/dependency.js +0 -50
- package/es/engine/matchers/eq.js +0 -35
- package/es/engine/matchers/eq_set.js +0 -49
- package/es/engine/matchers/ew.js +0 -38
- package/es/engine/matchers/gte.js +0 -35
- package/es/engine/matchers/index.js +0 -65
- package/es/engine/matchers/lte.js +0 -35
- package/es/engine/matchers/part_of.js +0 -49
- package/es/engine/matchers/segment.js +0 -39
- package/es/engine/matchers/string.js +0 -44
- package/es/engine/matchers/sw.js +0 -38
- package/es/engine/matchers/types.js +0 -48
- package/es/engine/matchers/whitelist.js +0 -36
- package/es/engine/parser/index.js +0 -69
- package/es/engine/parser/segments.js +0 -22
- package/es/engine/transforms/matcherGroup.js +0 -43
- package/es/engine/transforms/matchers.js +0 -109
- package/es/engine/transforms/segment.js +0 -28
- package/es/engine/transforms/set.js +0 -20
- package/es/engine/transforms/unaryNumeric.js +0 -20
- package/es/engine/transforms/whitelist.js +0 -22
- package/es/engine/treatments/index.js +0 -67
- package/es/engine/value/index.js +0 -54
- package/es/engine/value/sanitize.js +0 -125
- package/es/events/index.js +0 -65
- package/es/factory/offline.js +0 -50
- package/es/factory/online.js +0 -113
- package/es/impressions/counter.js +0 -52
- package/es/impressions/hasher/buildKey.js +0 -3
- package/es/impressions/hasher/hashImpression128.js +0 -5
- package/es/impressions/hasher/hashImpression32.js +0 -5
- package/es/impressions/observer/browser.js +0 -9
- package/es/impressions/observer/node.js +0 -9
- package/es/impressions/observer/observer.js +0 -21
- package/es/integrations/browser.js +0 -62
- package/es/integrations/ga/GaToSplit.js +0 -246
- package/es/integrations/ga/SplitToGa.js +0 -127
- package/es/integrations/node.js +0 -3
- package/es/listeners/browser.js +0 -157
- package/es/listeners/node.js +0 -65
- package/es/manager/index.js +0 -104
- package/es/metrics/Collectors.js +0 -100
- package/es/metrics/index.js +0 -157
- package/es/producer/browser/Partial.js +0 -103
- package/es/producer/browser.js +0 -70
- package/es/producer/fetcher/MySegments.js +0 -47
- package/es/producer/fetcher/SegmentChanges.js +0 -52
- package/es/producer/fetcher/SplitChanges.js +0 -46
- package/es/producer/node.js +0 -130
- package/es/producer/offline/browser.js +0 -26
- package/es/producer/offline/node.js +0 -26
- package/es/producer/task.js +0 -50
- package/es/producer/updater/MySegments.js +0 -108
- package/es/producer/updater/SegmentChanges.js +0 -135
- package/es/producer/updater/SplitChanges.js +0 -131
- package/es/producer/updater/SplitChangesFromFeatures.js +0 -21
- package/es/producer/updater/SplitChangesFromFileSystem.js +0 -21
- package/es/producer/updater/SplitChangesFromObject.js +0 -73
- package/es/readiness/index.js +0 -123
- package/es/readiness/statusManager.js +0 -114
- package/es/services/auth/auth.js +0 -25
- package/es/services/auth/index.js +0 -2
- package/es/services/events/bulk.js +0 -22
- package/es/services/events/index.js +0 -17
- package/es/services/getEventSource/node.js +0 -18
- package/es/services/getFetch/browser.js +0 -4
- package/es/services/getFetch/node.js +0 -18
- package/es/services/impressions/bulk.js +0 -26
- package/es/services/impressions/count.js +0 -7
- package/es/services/impressions/dto.js +0 -73
- package/es/services/impressions/index.js +0 -17
- package/es/services/impressions/post.js +0 -22
- package/es/services/metrics/counters.js +0 -24
- package/es/services/metrics/dto.js +0 -38
- package/es/services/metrics/index.js +0 -17
- package/es/services/metrics/times.js +0 -24
- package/es/services/mySegments/get.js +0 -26
- package/es/services/mySegments/index.js +0 -17
- package/es/services/request/index.js +0 -43
- package/es/services/request/options/browser.js +0 -18
- package/es/services/request/options/node.js +0 -28
- package/es/services/segmentChanges/get.js +0 -21
- package/es/services/segmentChanges/index.js +0 -17
- package/es/services/splitChanges/get.js +0 -19
- package/es/services/splitChanges/index.js +0 -17
- package/es/services/splitChanges/offline/browser.js +0 -63
- package/es/services/splitChanges/offline/node.js +0 -176
- package/es/services/splitChanges/offline/parseCondition.js +0 -43
- package/es/services/transport/index.js +0 -51
- package/es/storage/AttributesCache/InMemory.js +0 -85
- package/es/storage/BaseMetricsAsyncCache.js +0 -23
- package/es/storage/CountCache/InMemory.js +0 -48
- package/es/storage/CountCache/InRedis.js +0 -42
- package/es/storage/EventsCache/InMemory.js +0 -109
- package/es/storage/EventsCache/InRedis.js +0 -65
- package/es/storage/ImpressionsCache/InMemory.js +0 -71
- package/es/storage/ImpressionsCache/InRedis.js +0 -73
- package/es/storage/Keys.js +0 -125
- package/es/storage/KeysLocalStorage.js +0 -47
- package/es/storage/LatencyCache/InMemory.js +0 -56
- package/es/storage/LatencyCache/InRedis.js +0 -44
- package/es/storage/LatencyCache/findIndex.js +0 -2
- package/es/storage/Meta.js +0 -7
- package/es/storage/RedisAdapter.js +0 -198
- package/es/storage/SegmentCache/InLocalStorage/index.js +0 -138
- package/es/storage/SegmentCache/InMemory/browser.js +0 -107
- package/es/storage/SegmentCache/InMemory/node.js +0 -82
- package/es/storage/SegmentCache/InRedis/index.js +0 -81
- package/es/storage/SplitCache/InLocalStorage.js +0 -332
- package/es/storage/SplitCache/InMemory.js +0 -162
- package/es/storage/SplitCache/InRedis.js +0 -214
- package/es/storage/SplitCache/killLocally.js +0 -35
- package/es/storage/browser.js +0 -101
- package/es/storage/node.js +0 -81
- package/es/sync/AuthClient/index.js +0 -34
- package/es/sync/PushManager/index.js +0 -315
- package/es/sync/PushManager/mySegmentsV2utils.js +0 -76
- package/es/sync/PushManager/pushRequirements/browser.js +0 -23
- package/es/sync/PushManager/pushRequirements/node.js +0 -18
- package/es/sync/SSEClient/index.js +0 -93
- package/es/sync/SSEHandler/NotificationKeeper.js +0 -97
- package/es/sync/SSEHandler/NotificationParser.js +0 -31
- package/es/sync/SSEHandler/index.js +0 -110
- package/es/sync/SegmentUpdateWorker/browser.js +0 -74
- package/es/sync/SegmentUpdateWorker/node.js +0 -79
- package/es/sync/SplitUpdateWorker/index.js +0 -86
- package/es/sync/browser.js +0 -125
- package/es/sync/constants.js +0 -42
- package/es/sync/node.js +0 -60
- package/es/trackers/event.js +0 -53
- package/es/trackers/impressions.js +0 -132
- package/es/utils/backoff/index.js +0 -51
- package/es/utils/base64/browser.js +0 -19
- package/es/utils/base64/node.js +0 -19
- package/es/utils/base64/package.json +0 -4
- package/es/utils/binarySearch/index.js +0 -50
- package/es/utils/constants/index.js +0 -38
- package/es/utils/context/constants.js +0 -30
- package/es/utils/context/index.js +0 -101
- package/es/utils/decompress/index.js +0 -476
- package/es/utils/fn/repeat.js +0 -58
- package/es/utils/inputValidation/apiKey.js +0 -39
- package/es/utils/inputValidation/attribute.js +0 -22
- package/es/utils/inputValidation/attributes.js +0 -19
- package/es/utils/inputValidation/event.js +0 -23
- package/es/utils/inputValidation/eventProperties.js +0 -69
- package/es/utils/inputValidation/eventValue.js +0 -9
- package/es/utils/inputValidation/index.js +0 -11
- package/es/utils/inputValidation/isOperational.js +0 -14
- package/es/utils/inputValidation/key.js +0 -50
- package/es/utils/inputValidation/split.js +0 -47
- package/es/utils/inputValidation/splitFilters.js +0 -121
- package/es/utils/inputValidation/splits.js +0 -27
- package/es/utils/inputValidation/trafficType.js +0 -55
- package/es/utils/jwt/hashUserKey.js +0 -11
- package/es/utils/jwt/index.js +0 -14
- package/es/utils/key/factory.js +0 -38
- package/es/utils/key/parser.js +0 -34
- package/es/utils/labels/index.js +0 -7
- package/es/utils/lang/Errors.js +0 -41
- package/es/utils/lang/Sets.js +0 -114
- package/es/utils/lang/index.js +0 -305
- package/es/utils/localstorage/isAvailable.js +0 -26
- package/es/utils/logger/LoggerFactory.js +0 -86
- package/es/utils/logger/index.js +0 -97
- package/es/utils/lrucache/linkedlist.js +0 -122
- package/es/utils/lrucache/lru.spec.js +0 -24
- package/es/utils/lrucache/lrucache.js +0 -80
- package/es/utils/now/browser.js +0 -27
- package/es/utils/now/node.js +0 -19
- package/es/utils/now/package.json +0 -4
- package/es/utils/promise/thenable.js +0 -3
- package/es/utils/promise/timeout.js +0 -34
- package/es/utils/promise/wrapper.js +0 -58
- package/es/utils/settings/defaults/browser.js +0 -12
- package/es/utils/settings/defaults/node.js +0 -21
- package/es/utils/settings/defaults/package.json +0 -4
- package/es/utils/settings/impressionsMode.js +0 -16
- package/es/utils/settings/index.js +0 -194
- package/es/utils/settings/integrations/browser.js +0 -8
- package/es/utils/settings/integrations/common.js +0 -30
- package/es/utils/settings/integrations/node.js +0 -7
- package/es/utils/settings/integrations/package.json +0 -4
- package/es/utils/settings/language/browser.js +0 -16
- package/es/utils/settings/language/node.js +0 -16
- package/es/utils/settings/language/package.json +0 -4
- package/es/utils/settings/mode.js +0 -10
- package/es/utils/settings/runtime/browser.js +0 -21
- package/es/utils/settings/runtime/node.js +0 -33
- package/es/utils/settings/runtime/package.json +0 -4
- package/es/utils/settings/storage/browser.js +0 -64
- package/es/utils/settings/storage/node.js +0 -86
- package/es/utils/settings/storage/package.json +0 -4
- package/es/utils/splits/usesSegments.js +0 -21
- package/es/utils/time/index.js +0 -8
- package/es/utils/timeTracker/index.js +0 -216
- package/es/utils/timeTracker/timer.js +0 -25
- package/lib/client/attributesDecoration.js +0 -128
- package/lib/client/browser.js +0 -50
- package/lib/client/client.js +0 -174
- package/lib/client/inputValidation.js +0 -129
- package/lib/client/node.js +0 -14
- package/lib/client/package.json +0 -4
- package/lib/engine/combiners/and.js +0 -65
- package/lib/engine/combiners/ifelseif.js +0 -88
- package/lib/engine/condition/index.js +0 -76
- package/lib/engine/convertions/index.js +0 -36
- package/lib/engine/engine/index.js +0 -71
- package/lib/engine/engine/legacy.js +0 -83
- package/lib/engine/engine/murmur3/common.js +0 -52
- package/lib/engine/engine/murmur3/murmur3.js +0 -90
- package/lib/engine/engine/murmur3/murmur3_128.js +0 -256
- package/lib/engine/engine/murmur3/murmur3_128_x86.js +0 -189
- package/lib/engine/engine/murmur3/murmur3_64.js +0 -57
- package/lib/engine/engine/murmur3/utfx.js +0 -121
- package/lib/engine/evaluator/index.js +0 -129
- package/lib/engine/index.js +0 -128
- package/lib/engine/matchers/all.js +0 -41
- package/lib/engine/matchers/between.js +0 -44
- package/lib/engine/matchers/boolean.js +0 -44
- package/lib/engine/matchers/cont_all.js +0 -61
- package/lib/engine/matchers/cont_any.js +0 -57
- package/lib/engine/matchers/cont_str.js +0 -48
- package/lib/engine/matchers/dependency.js +0 -60
- package/lib/engine/matchers/eq.js +0 -44
- package/lib/engine/matchers/eq_set.js +0 -59
- package/lib/engine/matchers/ew.js +0 -48
- package/lib/engine/matchers/gte.js +0 -44
- package/lib/engine/matchers/index.js +0 -90
- package/lib/engine/matchers/lte.js +0 -44
- package/lib/engine/matchers/part_of.js +0 -59
- package/lib/engine/matchers/segment.js +0 -49
- package/lib/engine/matchers/string.js +0 -53
- package/lib/engine/matchers/sw.js +0 -48
- package/lib/engine/matchers/types.js +0 -57
- package/lib/engine/matchers/whitelist.js +0 -46
- package/lib/engine/parser/index.js +0 -84
- package/lib/engine/parser/segments.js +0 -28
- package/lib/engine/transforms/matcherGroup.js +0 -54
- package/lib/engine/transforms/matchers.js +0 -124
- package/lib/engine/transforms/segment.js +0 -34
- package/lib/engine/transforms/set.js +0 -26
- package/lib/engine/transforms/unaryNumeric.js +0 -26
- package/lib/engine/transforms/whitelist.js +0 -28
- package/lib/engine/treatments/index.js +0 -73
- package/lib/engine/value/index.js +0 -64
- package/lib/engine/value/sanitize.js +0 -137
- package/lib/events/index.js +0 -80
- package/lib/factory/offline.js +0 -62
- package/lib/factory/online.js +0 -129
- package/lib/impressions/counter.js +0 -61
- package/lib/impressions/hasher/buildKey.js +0 -8
- package/lib/impressions/hasher/hashImpression128.js +0 -12
- package/lib/impressions/hasher/hashImpression32.js +0 -14
- package/lib/impressions/observer/browser.js +0 -19
- package/lib/impressions/observer/node.js +0 -19
- package/lib/impressions/observer/observer.js +0 -29
- package/lib/impressions/observer/package.json +0 -4
- package/lib/integrations/browser.js +0 -72
- package/lib/integrations/ga/GaToSplit.js +0 -267
- package/lib/integrations/ga/SplitToGa.js +0 -138
- package/lib/integrations/node.js +0 -9
- package/lib/integrations/package.json +0 -4
- package/lib/listeners/browser.js +0 -173
- package/lib/listeners/node.js +0 -74
- package/lib/listeners/package.json +0 -4
- package/lib/manager/index.js +0 -115
- package/lib/metrics/Collectors.js +0 -118
- package/lib/metrics/index.js +0 -182
- package/lib/producer/browser/Partial.js +0 -114
- package/lib/producer/browser.js +0 -82
- package/lib/producer/fetcher/MySegments.js +0 -59
- package/lib/producer/fetcher/SegmentChanges.js +0 -62
- package/lib/producer/fetcher/SplitChanges.js +0 -58
- package/lib/producer/node.js +0 -142
- package/lib/producer/offline/browser.js +0 -35
- package/lib/producer/offline/node.js +0 -35
- package/lib/producer/offline/package.json +0 -4
- package/lib/producer/package.json +0 -4
- package/lib/producer/task.js +0 -61
- package/lib/producer/updater/MySegments.js +0 -119
- package/lib/producer/updater/SegmentChanges.js +0 -148
- package/lib/producer/updater/SplitChanges.js +0 -145
- package/lib/producer/updater/SplitChangesFromFeatures.js +0 -30
- package/lib/producer/updater/SplitChangesFromFileSystem.js +0 -30
- package/lib/producer/updater/SplitChangesFromObject.js +0 -84
- package/lib/readiness/index.js +0 -132
- package/lib/readiness/statusManager.js +0 -124
- package/lib/services/auth/auth.js +0 -32
- package/lib/services/auth/index.js +0 -11
- package/lib/services/events/bulk.js +0 -31
- package/lib/services/events/index.js +0 -26
- package/lib/services/getEventSource/browser.js +0 -8
- package/lib/services/getEventSource/node.js +0 -26
- package/lib/services/getEventSource/package.json +0 -4
- package/lib/services/getFetch/browser.js +0 -12
- package/lib/services/getFetch/node.js +0 -24
- package/lib/services/getFetch/package.json +0 -4
- package/lib/services/impressions/bulk.js +0 -36
- package/lib/services/impressions/count.js +0 -16
- package/lib/services/impressions/dto.js +0 -81
- package/lib/services/impressions/index.js +0 -26
- package/lib/services/impressions/post.js +0 -31
- package/lib/services/metrics/counters.js +0 -33
- package/lib/services/metrics/dto.js +0 -46
- package/lib/services/metrics/index.js +0 -26
- package/lib/services/metrics/times.js +0 -33
- package/lib/services/mySegments/get.js +0 -35
- package/lib/services/mySegments/index.js +0 -26
- package/lib/services/request/index.js +0 -53
- package/lib/services/request/options/browser.js +0 -23
- package/lib/services/request/options/node.js +0 -37
- package/lib/services/request/options/package.json +0 -4
- package/lib/services/segmentChanges/get.js +0 -29
- package/lib/services/segmentChanges/index.js +0 -26
- package/lib/services/splitChanges/get.js +0 -27
- package/lib/services/splitChanges/index.js +0 -26
- package/lib/services/splitChanges/offline/browser.js +0 -71
- package/lib/services/splitChanges/offline/node.js +0 -189
- package/lib/services/splitChanges/offline/package.json +0 -4
- package/lib/services/splitChanges/offline/parseCondition.js +0 -49
- package/lib/services/transport/index.js +0 -62
- package/lib/storage/AttributesCache/InMemory.js +0 -93
- package/lib/storage/BaseMetricsAsyncCache.js +0 -28
- package/lib/storage/CountCache/InMemory.js +0 -54
- package/lib/storage/CountCache/InRedis.js +0 -50
- package/lib/storage/EventsCache/InMemory.js +0 -118
- package/lib/storage/EventsCache/InRedis.js +0 -74
- package/lib/storage/ImpressionsCache/InMemory.js +0 -77
- package/lib/storage/ImpressionsCache/InRedis.js +0 -79
- package/lib/storage/Keys.js +0 -132
- package/lib/storage/KeysLocalStorage.js +0 -58
- package/lib/storage/LatencyCache/InMemory.js +0 -64
- package/lib/storage/LatencyCache/InRedis.js +0 -53
- package/lib/storage/LatencyCache/findIndex.js +0 -12
- package/lib/storage/Meta.js +0 -12
- package/lib/storage/RedisAdapter.js +0 -212
- package/lib/storage/SegmentCache/InLocalStorage/index.js +0 -147
- package/lib/storage/SegmentCache/InMemory/browser.js +0 -113
- package/lib/storage/SegmentCache/InMemory/node.js +0 -89
- package/lib/storage/SegmentCache/InMemory/package.json +0 -4
- package/lib/storage/SegmentCache/InRedis/index.js +0 -87
- package/lib/storage/SplitCache/InLocalStorage.js +0 -344
- package/lib/storage/SplitCache/InMemory.js +0 -172
- package/lib/storage/SplitCache/InRedis.js +0 -224
- package/lib/storage/SplitCache/killLocally.js +0 -42
- package/lib/storage/browser.js +0 -122
- package/lib/storage/node.js +0 -104
- package/lib/storage/package.json +0 -4
- package/lib/sync/AuthClient/index.js +0 -44
- package/lib/sync/PushManager/index.js +0 -340
- package/lib/sync/PushManager/mySegmentsV2utils.js +0 -87
- package/lib/sync/PushManager/pushRequirements/browser.js +0 -30
- package/lib/sync/PushManager/pushRequirements/node.js +0 -25
- package/lib/sync/PushManager/pushRequirements/package.json +0 -4
- package/lib/sync/SSEClient/index.js +0 -101
- package/lib/sync/SSEHandler/NotificationKeeper.js +0 -104
- package/lib/sync/SSEHandler/NotificationParser.js +0 -39
- package/lib/sync/SSEHandler/index.js +0 -121
- package/lib/sync/SegmentUpdateWorker/browser.js +0 -81
- package/lib/sync/SegmentUpdateWorker/node.js +0 -86
- package/lib/sync/SegmentUpdateWorker/package.json +0 -4
- package/lib/sync/SplitUpdateWorker/index.js +0 -93
- package/lib/sync/browser.js +0 -139
- package/lib/sync/constants.js +0 -59
- package/lib/sync/node.js +0 -71
- package/lib/sync/package.json +0 -4
- package/lib/trackers/event.js +0 -64
- package/lib/trackers/impressions.js +0 -146
- package/lib/utils/backoff/index.js +0 -57
- package/lib/utils/base64/browser.js +0 -26
- package/lib/utils/base64/node.js +0 -26
- package/lib/utils/base64/package.json +0 -4
- package/lib/utils/binarySearch/index.js +0 -56
- package/lib/utils/constants/index.js +0 -60
- package/lib/utils/context/constants.js +0 -49
- package/lib/utils/context/index.js +0 -111
- package/lib/utils/decompress/index.js +0 -483
- package/lib/utils/fn/repeat.js +0 -64
- package/lib/utils/inputValidation/apiKey.js +0 -51
- package/lib/utils/inputValidation/attribute.js +0 -32
- package/lib/utils/inputValidation/attributes.js +0 -32
- package/lib/utils/inputValidation/event.js +0 -33
- package/lib/utils/inputValidation/eventProperties.js +0 -78
- package/lib/utils/inputValidation/eventValue.js +0 -19
- package/lib/utils/inputValidation/index.js +0 -48
- package/lib/utils/inputValidation/isOperational.js +0 -25
- package/lib/utils/inputValidation/key.js +0 -59
- package/lib/utils/inputValidation/split.js +0 -60
- package/lib/utils/inputValidation/splitFilters.js +0 -134
- package/lib/utils/inputValidation/splits.js +0 -38
- package/lib/utils/inputValidation/trafficType.js +0 -68
- package/lib/utils/jwt/hashUserKey.js +0 -19
- package/lib/utils/jwt/index.js +0 -19
- package/lib/utils/key/factory.js +0 -46
- package/lib/utils/key/parser.js +0 -42
- package/lib/utils/labels/index.js +0 -18
- package/lib/utils/lang/Errors.js +0 -58
- package/lib/utils/lang/Sets.js +0 -127
- package/lib/utils/lang/index.js +0 -350
- package/lib/utils/localstorage/isAvailable.js +0 -31
- package/lib/utils/logger/LoggerFactory.js +0 -98
- package/lib/utils/logger/index.js +0 -109
- package/lib/utils/lrucache/linkedlist.js +0 -132
- package/lib/utils/lrucache/lru.spec.js +0 -30
- package/lib/utils/lrucache/lrucache.js +0 -88
- package/lib/utils/now/browser.js +0 -33
- package/lib/utils/now/node.js +0 -24
- package/lib/utils/now/package.json +0 -4
- package/lib/utils/promise/thenable.js +0 -10
- package/lib/utils/promise/timeout.js +0 -40
- package/lib/utils/promise/wrapper.js +0 -63
- package/lib/utils/settings/defaults/package.json +0 -4
- package/lib/utils/settings/impressionsMode.js +0 -26
- package/lib/utils/settings/index.js +0 -214
- package/lib/utils/settings/integrations/browser.js +0 -17
- package/lib/utils/settings/integrations/common.js +0 -40
- package/lib/utils/settings/integrations/node.js +0 -13
- package/lib/utils/settings/integrations/package.json +0 -4
- package/lib/utils/settings/language/browser.js +0 -22
- package/lib/utils/settings/language/node.js +0 -22
- package/lib/utils/settings/language/package.json +0 -4
- package/lib/utils/settings/mode.js +0 -16
- package/lib/utils/settings/runtime/browser.js +0 -26
- package/lib/utils/settings/runtime/node.js +0 -43
- package/lib/utils/settings/runtime/package.json +0 -4
- package/lib/utils/settings/storage/browser.js +0 -75
- package/lib/utils/settings/storage/node.js +0 -92
- package/lib/utils/settings/storage/package.json +0 -4
- package/lib/utils/splits/usesSegments.js +0 -27
- package/lib/utils/time/index.js +0 -12
- package/lib/utils/timeTracker/index.js +0 -213
- package/lib/utils/timeTracker/timer.js +0 -33
- package/src/client/attributesDecoration.js +0 -112
- package/src/client/browser.js +0 -41
- package/src/client/client.js +0 -131
- package/src/client/inputValidation.js +0 -130
- package/src/client/node.js +0 -8
- package/src/client/package.json +0 -4
- package/src/engine/combiners/and.js +0 -55
- package/src/engine/combiners/ifelseif.js +0 -74
- package/src/engine/condition/index.js +0 -65
- package/src/engine/convertions/index.js +0 -22
- package/src/engine/engine/index.js +0 -63
- package/src/engine/engine/legacy.js +0 -66
- package/src/engine/engine/murmur3/common.js +0 -54
- package/src/engine/engine/murmur3/murmur3.js +0 -79
- package/src/engine/engine/murmur3/murmur3_128.js +0 -273
- package/src/engine/engine/murmur3/murmur3_128_x86.js +0 -188
- package/src/engine/engine/murmur3/murmur3_64.js +0 -34
- package/src/engine/engine/murmur3/utfx.js +0 -111
- package/src/engine/evaluator/index.js +0 -148
- package/src/engine/index.js +0 -123
- package/src/engine/matchers/all.js +0 -29
- package/src/engine/matchers/between.js +0 -30
- package/src/engine/matchers/boolean.js +0 -29
- package/src/engine/matchers/cont_all.js +0 -40
- package/src/engine/matchers/cont_any.js +0 -35
- package/src/engine/matchers/cont_str.js +0 -31
- package/src/engine/matchers/dependency.js +0 -52
- package/src/engine/matchers/eq.js +0 -30
- package/src/engine/matchers/eq_set.js +0 -37
- package/src/engine/matchers/ew.js +0 -31
- package/src/engine/matchers/gte.js +0 -30
- package/src/engine/matchers/index.js +0 -71
- package/src/engine/matchers/lte.js +0 -30
- package/src/engine/matchers/part_of.js +0 -37
- package/src/engine/matchers/segment.js +0 -41
- package/src/engine/matchers/string.js +0 -39
- package/src/engine/matchers/sw.js +0 -31
- package/src/engine/matchers/types.js +0 -52
- package/src/engine/matchers/whitelist.js +0 -30
- package/src/engine/parser/index.js +0 -79
- package/src/engine/parser/segments.js +0 -31
- package/src/engine/transforms/matcherGroup.js +0 -45
- package/src/engine/transforms/matchers.js +0 -118
- package/src/engine/transforms/segment.js +0 -23
- package/src/engine/transforms/set.js +0 -20
- package/src/engine/transforms/unaryNumeric.js +0 -20
- package/src/engine/transforms/whitelist.js +0 -22
- package/src/engine/treatments/index.js +0 -67
- package/src/engine/value/index.js +0 -53
- package/src/engine/value/sanitize.js +0 -117
- package/src/events/index.js +0 -62
- package/src/factory/offline.js +0 -60
- package/src/factory/online.js +0 -127
- package/src/impressions/counter.js +0 -43
- package/src/impressions/hasher/buildKey.js +0 -3
- package/src/impressions/hasher/hashImpression128.js +0 -6
- package/src/impressions/hasher/hashImpression32.js +0 -6
- package/src/impressions/observer/browser.js +0 -8
- package/src/impressions/observer/node.js +0 -8
- package/src/impressions/observer/observer.js +0 -17
- package/src/impressions/observer/package.json +0 -4
- package/src/integrations/browser.js +0 -57
- package/src/integrations/ga/GaToSplit.js +0 -278
- package/src/integrations/ga/SplitToGa.js +0 -125
- package/src/integrations/node.js +0 -4
- package/src/integrations/package.json +0 -4
- package/src/listeners/browser.js +0 -137
- package/src/listeners/node.js +0 -59
- package/src/listeners/package.json +0 -4
- package/src/manager/index.js +0 -103
- package/src/metrics/Collectors.js +0 -77
- package/src/metrics/index.js +0 -174
- package/src/producer/browser/Partial.js +0 -104
- package/src/producer/browser.js +0 -82
- package/src/producer/fetcher/MySegments.js +0 -40
- package/src/producer/fetcher/SegmentChanges.js +0 -52
- package/src/producer/fetcher/SplitChanges.js +0 -39
- package/src/producer/node.js +0 -142
- package/src/producer/offline/browser.js +0 -28
- package/src/producer/offline/node.js +0 -28
- package/src/producer/offline/package.json +0 -4
- package/src/producer/package.json +0 -4
- package/src/producer/task.js +0 -57
- package/src/producer/updater/MySegments.js +0 -104
- package/src/producer/updater/SegmentChanges.js +0 -126
- package/src/producer/updater/SplitChanges.js +0 -138
- package/src/producer/updater/SplitChangesFromFeatures.js +0 -23
- package/src/producer/updater/SplitChangesFromFileSystem.js +0 -23
- package/src/producer/updater/SplitChangesFromObject.js +0 -81
- package/src/readiness/index.js +0 -125
- package/src/readiness/statusManager.js +0 -121
- package/src/services/.DS_Store +0 -0
- package/src/services/auth/auth.js +0 -21
- package/src/services/auth/index.js +0 -3
- package/src/services/events/bulk.js +0 -23
- package/src/services/events/index.js +0 -18
- package/src/services/getEventSource/browser.js +0 -3
- package/src/services/getEventSource/package.json +0 -4
- package/src/services/getFetch/package.json +0 -4
- package/src/services/impressions/bulk.js +0 -26
- package/src/services/impressions/count.js +0 -8
- package/src/services/impressions/dto.js +0 -71
- package/src/services/impressions/index.js +0 -18
- package/src/services/impressions/post.js +0 -23
- package/src/services/metrics/counters.js +0 -25
- package/src/services/metrics/dto.js +0 -44
- package/src/services/metrics/index.js +0 -18
- package/src/services/metrics/times.js +0 -25
- package/src/services/mySegments/get.js +0 -27
- package/src/services/mySegments/index.js +0 -18
- package/src/services/request/index.js +0 -43
- package/src/services/request/options/browser.js +0 -18
- package/src/services/request/options/node.js +0 -30
- package/src/services/request/options/package.json +0 -4
- package/src/services/segmentChanges/get.js +0 -20
- package/src/services/segmentChanges/index.js +0 -18
- package/src/services/splitChanges/get.js +0 -20
- package/src/services/splitChanges/index.js +0 -18
- package/src/services/splitChanges/offline/browser.js +0 -66
- package/src/services/splitChanges/offline/node.js +0 -190
- package/src/services/splitChanges/offline/package.json +0 -4
- package/src/services/splitChanges/offline/parseCondition.js +0 -52
- package/src/services/transport/index.js +0 -44
- package/src/storage/AttributesCache/InMemory.js +0 -76
- package/src/storage/BaseMetricsAsyncCache.js +0 -14
- package/src/storage/CountCache/InMemory.js +0 -48
- package/src/storage/CountCache/InRedis.js +0 -32
- package/src/storage/EventsCache/InMemory.js +0 -99
- package/src/storage/EventsCache/InRedis.js +0 -62
- package/src/storage/ImpressionsCache/InMemory.js +0 -62
- package/src/storage/ImpressionsCache/InRedis.js +0 -65
- package/src/storage/Keys.js +0 -122
- package/src/storage/KeysLocalStorage.js +0 -40
- package/src/storage/LatencyCache/InMemory.js +0 -56
- package/src/storage/LatencyCache/InRedis.js +0 -35
- package/src/storage/LatencyCache/findIndex.js +0 -7
- package/src/storage/Meta.js +0 -7
- package/src/storage/RedisAdapter.js +0 -170
- package/src/storage/SegmentCache/InLocalStorage/index.js +0 -120
- package/src/storage/SegmentCache/InMemory/browser.js +0 -99
- package/src/storage/SegmentCache/InMemory/node.js +0 -84
- package/src/storage/SegmentCache/InMemory/package.json +0 -4
- package/src/storage/SegmentCache/InRedis/index.js +0 -71
- package/src/storage/SplitCache/InLocalStorage.js +0 -324
- package/src/storage/SplitCache/InMemory.js +0 -145
- package/src/storage/SplitCache/InRedis.js +0 -187
- package/src/storage/SplitCache/killLocally.js +0 -33
- package/src/storage/browser.js +0 -110
- package/src/storage/node.js +0 -83
- package/src/storage/package.json +0 -4
- package/src/sync/.DS_Store +0 -0
- package/src/sync/AuthClient/index.js +0 -31
- package/src/sync/PushManager/index.js +0 -328
- package/src/sync/PushManager/mySegmentsV2utils.js +0 -76
- package/src/sync/PushManager/pushRequirements/browser.js +0 -20
- package/src/sync/PushManager/pushRequirements/node.js +0 -16
- package/src/sync/PushManager/pushRequirements/package.json +0 -4
- package/src/sync/SSEClient/index.js +0 -92
- package/src/sync/SSEHandler/NotificationKeeper.js +0 -90
- package/src/sync/SSEHandler/NotificationParser.js +0 -35
- package/src/sync/SSEHandler/index.js +0 -110
- package/src/sync/SegmentUpdateWorker/browser.js +0 -67
- package/src/sync/SegmentUpdateWorker/node.js +0 -73
- package/src/sync/SegmentUpdateWorker/package.json +0 -4
- package/src/sync/SplitUpdateWorker/index.js +0 -79
- package/src/sync/browser.js +0 -130
- package/src/sync/constants.js +0 -43
- package/src/sync/node.js +0 -66
- package/src/sync/package.json +0 -4
- package/src/trackers/event.js +0 -47
- package/src/trackers/impressions.js +0 -123
- package/src/utils/backoff/index.js +0 -46
- package/src/utils/base64/browser.js +0 -19
- package/src/utils/base64/node.js +0 -19
- package/src/utils/base64/package.json +0 -4
- package/src/utils/binarySearch/index.js +0 -50
- package/src/utils/constants/index.js +0 -41
- package/src/utils/context/constants.js +0 -18
- package/src/utils/context/index.js +0 -84
- package/src/utils/decompress/index.js +0 -428
- package/src/utils/fn/repeat.js +0 -48
- package/src/utils/inputValidation/apiKey.js +0 -42
- package/src/utils/inputValidation/attribute.js +0 -22
- package/src/utils/inputValidation/attributes.js +0 -26
- package/src/utils/inputValidation/event.js +0 -23
- package/src/utils/inputValidation/eventProperties.js +0 -65
- package/src/utils/inputValidation/eventValue.js +0 -11
- package/src/utils/inputValidation/index.js +0 -11
- package/src/utils/inputValidation/isOperational.js +0 -16
- package/src/utils/inputValidation/key.js +0 -53
- package/src/utils/inputValidation/split.js +0 -42
- package/src/utils/inputValidation/splitFilters.js +0 -108
- package/src/utils/inputValidation/splits.js +0 -21
- package/src/utils/inputValidation/trafficType.js +0 -58
- package/src/utils/jwt/hashUserKey.js +0 -11
- package/src/utils/jwt/index.js +0 -15
- package/src/utils/key/factory.js +0 -34
- package/src/utils/key/parser.js +0 -34
- package/src/utils/labels/index.js +0 -7
- package/src/utils/lang/Errors.js +0 -19
- package/src/utils/lang/Sets.js +0 -94
- package/src/utils/lang/index.js +0 -291
- package/src/utils/localstorage/isAvailable.js +0 -26
- package/src/utils/logger/LoggerFactory.js +0 -90
- package/src/utils/logger/index.js +0 -93
- package/src/utils/lrucache/linkedlist.js +0 -116
- package/src/utils/lrucache/lru.spec.js +0 -26
- package/src/utils/lrucache/lrucache.js +0 -49
- package/src/utils/now/browser.js +0 -29
- package/src/utils/now/node.js +0 -21
- package/src/utils/now/package.json +0 -4
- package/src/utils/promise/thenable.js +0 -1
- package/src/utils/promise/timeout.js +0 -38
- package/src/utils/promise/wrapper.js +0 -60
- package/src/utils/settings/defaults/browser.js +0 -12
- package/src/utils/settings/defaults/node.js +0 -21
- package/src/utils/settings/defaults/package.json +0 -4
- package/src/utils/settings/impressionsMode.js +0 -15
- package/src/utils/settings/index.js +0 -217
- package/src/utils/settings/integrations/browser.js +0 -8
- package/src/utils/settings/integrations/common.js +0 -32
- package/src/utils/settings/integrations/node.js +0 -7
- package/src/utils/settings/integrations/package.json +0 -4
- package/src/utils/settings/language/browser.js +0 -17
- package/src/utils/settings/language/node.js +0 -17
- package/src/utils/settings/language/package.json +0 -4
- package/src/utils/settings/mode.js +0 -12
- package/src/utils/settings/runtime/browser.js +0 -22
- package/src/utils/settings/runtime/node.js +0 -34
- package/src/utils/settings/runtime/package.json +0 -4
- package/src/utils/settings/storage/browser.js +0 -70
- package/src/utils/settings/storage/package.json +0 -4
- package/src/utils/splits/usesSegments.js +0 -17
- package/src/utils/time/index.js +0 -8
- package/src/utils/timeTracker/index.js +0 -223
- package/src/utils/timeTracker/timer.js +0 -27
|
@@ -1,22 +0,0 @@
|
|
|
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
|
-
import { _Set } from '../../utils/lang/Sets';
|
|
17
|
-
|
|
18
|
-
function transform(whitelistObject) {
|
|
19
|
-
return new _Set(whitelistObject.whitelist);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default transform;
|
|
@@ -1,67 +0,0 @@
|
|
|
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 { findIndex } from '../../utils/lang';
|
|
18
|
-
|
|
19
|
-
function Treatments(ranges, treatments) {
|
|
20
|
-
if (!(this instanceof Treatments)) {
|
|
21
|
-
return new Treatments(ranges, treatments);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (ranges[ranges.length - 1] !== 100) {
|
|
25
|
-
throw new RangeError('Provided invalid dataset as input');
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
this._ranges = ranges;
|
|
29
|
-
this._treatments = treatments;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
Treatments.parse = function parse(data) {
|
|
33
|
-
let {ranges, treatments} = data.reduce((accum, value) => {
|
|
34
|
-
let {size, treatment} = value;
|
|
35
|
-
|
|
36
|
-
accum.ranges.push(accum.inc += size);
|
|
37
|
-
accum.treatments.push(treatment);
|
|
38
|
-
|
|
39
|
-
return accum;
|
|
40
|
-
}, {
|
|
41
|
-
inc: 0,
|
|
42
|
-
ranges: [],
|
|
43
|
-
treatments: []
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
return new Treatments(ranges, treatments);
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
Treatments.prototype.getTreatmentFor = function getTreatmentFor(x) {
|
|
50
|
-
if (x < 0 || x > 100) {
|
|
51
|
-
throw new RangeError('Please provide a value between 0 and 100');
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Readme [1]
|
|
55
|
-
// We need to manually add any dependency which escape of dummy resolution
|
|
56
|
-
// I'll deal with this in a future release
|
|
57
|
-
// for (let [k, r] of this._ranges.entries()) {
|
|
58
|
-
// if (x <= r) return this._treatments[k];
|
|
59
|
-
// }
|
|
60
|
-
|
|
61
|
-
const index = findIndex(this._ranges, range => x <= range);
|
|
62
|
-
const treatment = this._treatments[index];
|
|
63
|
-
|
|
64
|
-
return treatment;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
export default Treatments;
|
|
@@ -1,53 +0,0 @@
|
|
|
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-engine:value');
|
|
19
|
-
import sanitizeValue from './sanitize';
|
|
20
|
-
|
|
21
|
-
function parseValue(key, attributeName, attributes) {
|
|
22
|
-
let value = undefined;
|
|
23
|
-
if (attributeName) {
|
|
24
|
-
if (attributes) {
|
|
25
|
-
value = attributes[attributeName];
|
|
26
|
-
log.debug(`Extracted attribute [${attributeName}], [${value}] will be used for matching.`);
|
|
27
|
-
} else {
|
|
28
|
-
log.warn(`Defined attribute [${attributeName}], no attributes received.`);
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
value = key;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return value;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Defines value to be matched (key / attribute).
|
|
39
|
-
*/
|
|
40
|
-
function value(key, matcherDto, attributes) {
|
|
41
|
-
const attributeName = matcherDto.attribute;
|
|
42
|
-
const valueToMatch = parseValue(key, attributeName, attributes);
|
|
43
|
-
const sanitizedValue = sanitizeValue(matcherDto.type, valueToMatch, matcherDto.dataType, attributes);
|
|
44
|
-
|
|
45
|
-
if (sanitizedValue !== undefined) {
|
|
46
|
-
return sanitizedValue;
|
|
47
|
-
} else {
|
|
48
|
-
log.warn(`Value ${valueToMatch} ${attributeName ? `for attribute ${attributeName} ` : + ''}doesn't match with expected type.`);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export default value;
|
|
@@ -1,117 +0,0 @@
|
|
|
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-engine:sanitize');
|
|
19
|
-
import { isObject, uniq, toString, toNumber } from '../../utils/lang';
|
|
20
|
-
import { zeroSinceHH, zeroSinceSS } from '../convertions';
|
|
21
|
-
import { matcherTypes, matcherDataTypes } from '../matchers/types';
|
|
22
|
-
|
|
23
|
-
function sanitizeNumber(val) {
|
|
24
|
-
const num = toNumber(val);
|
|
25
|
-
return isNaN(num) ? undefined : num;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function sanitizeString(val) {
|
|
29
|
-
let valueToSanitize = val;
|
|
30
|
-
|
|
31
|
-
if (isObject(val)) {
|
|
32
|
-
// If the value is an object and is not a key, discard it.
|
|
33
|
-
valueToSanitize = val.matchingKey ? val.matchingKey : undefined;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const str = toString(valueToSanitize);
|
|
37
|
-
return str ? str : undefined;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function sanitizeArray(val) {
|
|
41
|
-
const arr = Array.isArray(val) ? uniq(val.map(e => e + '')) : [];
|
|
42
|
-
return arr.length ? arr : undefined;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function sanitizeBoolean(val) {
|
|
46
|
-
if (val === true || val === false) return val;
|
|
47
|
-
|
|
48
|
-
if (typeof val === 'string') {
|
|
49
|
-
const lowerCaseValue = val.toLocaleLowerCase();
|
|
50
|
-
|
|
51
|
-
if (lowerCaseValue === 'true') return true;
|
|
52
|
-
if (lowerCaseValue === 'false') return false;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function dependencyProcessor(sanitizedValue, attributes) {
|
|
59
|
-
return {
|
|
60
|
-
key: sanitizedValue,
|
|
61
|
-
attributes
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* We can define a pre-processing for the value, to be executed prior to matcher evaluation.
|
|
67
|
-
*/
|
|
68
|
-
function getProcessingFunction(matcherTypeID, dataType) {
|
|
69
|
-
switch (matcherTypeID) {
|
|
70
|
-
case matcherTypes.EQUAL_TO:
|
|
71
|
-
return dataType === 'DATETIME' ? zeroSinceHH : undefined;
|
|
72
|
-
case matcherTypes.GREATER_THAN_OR_EQUAL_TO:
|
|
73
|
-
case matcherTypes.LESS_THAN_OR_EQUAL_TO:
|
|
74
|
-
case matcherTypes.BETWEEN:
|
|
75
|
-
return dataType === 'DATETIME' ? zeroSinceSS : undefined;
|
|
76
|
-
case matcherTypes.IN_SPLIT_TREATMENT:
|
|
77
|
-
return dependencyProcessor;
|
|
78
|
-
default:
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function sanitizeValue(matcherTypeID, value, dataType, attributes) {
|
|
84
|
-
const processor = getProcessingFunction(matcherTypeID, dataType);
|
|
85
|
-
let sanitizedValue;
|
|
86
|
-
|
|
87
|
-
switch (dataType) {
|
|
88
|
-
case matcherDataTypes.NUMBER:
|
|
89
|
-
case matcherDataTypes.DATETIME:
|
|
90
|
-
sanitizedValue = sanitizeNumber(value);
|
|
91
|
-
break;
|
|
92
|
-
case matcherDataTypes.STRING:
|
|
93
|
-
sanitizedValue = sanitizeString(value);
|
|
94
|
-
break;
|
|
95
|
-
case matcherDataTypes.SET:
|
|
96
|
-
sanitizedValue = sanitizeArray(value);
|
|
97
|
-
break;
|
|
98
|
-
case matcherDataTypes.BOOLEAN:
|
|
99
|
-
sanitizedValue = sanitizeBoolean(value);
|
|
100
|
-
break;
|
|
101
|
-
case matcherDataTypes.NOT_SPECIFIED:
|
|
102
|
-
sanitizedValue = value;
|
|
103
|
-
break;
|
|
104
|
-
default:
|
|
105
|
-
sanitizedValue = undefined;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (processor) {
|
|
109
|
-
sanitizedValue = processor(sanitizedValue, attributes);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
log.debug(`Attempted to sanitize [${value}] which should be of type [${dataType}]. \n Sanitized and processed value => [${sanitizedValue instanceof Object ? JSON.stringify(sanitizedValue) : sanitizedValue}]`);
|
|
113
|
-
|
|
114
|
-
return sanitizedValue;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
export default sanitizeValue;
|
package/src/events/index.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import logFactory from '../utils/logger';
|
|
2
|
-
const log = logFactory('splitio-events');
|
|
3
|
-
import tracker from '../utils/timeTracker';
|
|
4
|
-
import repeat from '../utils/fn/repeat';
|
|
5
|
-
import eventsService from '../services/events';
|
|
6
|
-
import eventsBulkRequest from '../services/events/bulk';
|
|
7
|
-
|
|
8
|
-
const EventsFactory = context => {
|
|
9
|
-
const settings = context.get(context.constants.SETTINGS);
|
|
10
|
-
const storage = context.get(context.constants.STORAGE);
|
|
11
|
-
|
|
12
|
-
const pushEvents = () => {
|
|
13
|
-
if (storage.events.isEmpty()) return Promise.resolve();
|
|
14
|
-
|
|
15
|
-
log.info(`Pushing ${storage.events.state().length} queued events.`);
|
|
16
|
-
const latencyTrackerStop = tracker.start(tracker.TaskNames.EVENTS_PUSH);
|
|
17
|
-
const json = JSON.stringify(storage.events.toJSON());
|
|
18
|
-
const wrapUpCb = () => latencyTrackerStop();
|
|
19
|
-
storage.events.clear(); // we always clear the queue.
|
|
20
|
-
|
|
21
|
-
return eventsService(eventsBulkRequest(settings, {
|
|
22
|
-
body: json
|
|
23
|
-
})).then(wrapUpCb).catch(wrapUpCb);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
let stopEventPublisherTimeout = false;
|
|
27
|
-
let stopEventsPublisher = false;
|
|
28
|
-
const startEventsPublisher = () =>
|
|
29
|
-
stopEventsPublisher = repeat(
|
|
30
|
-
schedulePublisher => pushEvents().then(() => schedulePublisher()),
|
|
31
|
-
settings.scheduler.eventsPushRate
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
start() {
|
|
36
|
-
// On the browser there may be a wish to wait an specific amount of seconds before the first push.
|
|
37
|
-
if (settings.startup.eventsFirstPushWindow > 0) {
|
|
38
|
-
stopEventPublisherTimeout = setTimeout(startEventsPublisher, settings.startup.eventsFirstPushWindow);
|
|
39
|
-
} else {
|
|
40
|
-
startEventsPublisher();
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
flush() {
|
|
45
|
-
return pushEvents();
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
stop() {
|
|
49
|
-
stopEventPublisherTimeout && clearTimeout(stopEventPublisherTimeout);
|
|
50
|
-
stopEventsPublisher && stopEventsPublisher();
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
flushAndResetTimer() {
|
|
54
|
-
// Reset the timer and push the events.
|
|
55
|
-
log.info('Flushing events and reseting timer.');
|
|
56
|
-
stopEventsPublisher && stopEventsPublisher.reset();
|
|
57
|
-
return pushEvents();
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export default EventsFactory;
|
package/src/factory/offline.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import objectAssign from 'object-assign';
|
|
2
|
-
import ClientFactory from '../client';
|
|
3
|
-
import OfflineProducerFactory from '../producer/offline';
|
|
4
|
-
import { releaseApiKey } from '../utils/inputValidation';
|
|
5
|
-
|
|
6
|
-
//
|
|
7
|
-
// Create SDK instance for offline mode.
|
|
8
|
-
//
|
|
9
|
-
function SplitFactoryOffline(context, sharedTrackers) {
|
|
10
|
-
const sharedInstance = !sharedTrackers;
|
|
11
|
-
const readiness = context.get(context.constants.READINESS);
|
|
12
|
-
const storage = context.get(context.constants.STORAGE);
|
|
13
|
-
const statusManager = context.get(context.constants.STATUS_MANAGER);
|
|
14
|
-
|
|
15
|
-
// In LOCALHOST mode, shared clients are ready in the next event-loop cycle than created
|
|
16
|
-
// and then updated on each SDK_SPLITS_ARRIVED event
|
|
17
|
-
if (sharedInstance) setTimeout(() => {
|
|
18
|
-
readiness.splits.on(readiness.splits.SDK_SPLITS_ARRIVED, () => {
|
|
19
|
-
readiness.gate.emit(readiness.gate.SDK_UPDATE);
|
|
20
|
-
});
|
|
21
|
-
readiness.gate.emit(readiness.gate.SDK_READY);
|
|
22
|
-
}, 0);
|
|
23
|
-
|
|
24
|
-
// Producer
|
|
25
|
-
const producer = sharedInstance ? undefined : OfflineProducerFactory(context);
|
|
26
|
-
|
|
27
|
-
// Start background task for flag updates
|
|
28
|
-
producer && producer.start();
|
|
29
|
-
|
|
30
|
-
const api = objectAssign(
|
|
31
|
-
// Proto linkage of the EventEmitter to prevent any change
|
|
32
|
-
Object.create(statusManager),
|
|
33
|
-
// GetTreatment/s
|
|
34
|
-
ClientFactory(context),
|
|
35
|
-
// Utilities
|
|
36
|
-
{
|
|
37
|
-
// Destroy instance. Async so we respect the online api.
|
|
38
|
-
destroy() {
|
|
39
|
-
// Stop background jobs
|
|
40
|
-
producer && producer.stop();
|
|
41
|
-
// Cleanup event listeners
|
|
42
|
-
readiness.destroy();
|
|
43
|
-
// Cleanup storage
|
|
44
|
-
storage.destroy && storage.destroy();
|
|
45
|
-
// Mark the factory as destroyed.
|
|
46
|
-
context.put(context.constants.DESTROYED, true);
|
|
47
|
-
!sharedInstance && releaseApiKey();
|
|
48
|
-
|
|
49
|
-
return Promise.resolve();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
api,
|
|
56
|
-
metricCollectors: false // We won't collect any metrics on localhost mode.
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export default SplitFactoryOffline;
|
package/src/factory/online.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import objectAssign from 'object-assign';
|
|
2
|
-
import ClientFactory from '../client';
|
|
3
|
-
import MetricsFactory from '../metrics';
|
|
4
|
-
import EventsFactory from '../events';
|
|
5
|
-
import SyncManagerFactory from '../sync';
|
|
6
|
-
import SignalsListener from '../listeners';
|
|
7
|
-
import { releaseApiKey } from '../utils/inputValidation';
|
|
8
|
-
import { STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE } from '../utils/constants';
|
|
9
|
-
|
|
10
|
-
// map of authorizationKeys to syncManagers, to keep a single instance per factory and needed to create shared clients
|
|
11
|
-
const syncManagers = {};
|
|
12
|
-
|
|
13
|
-
//
|
|
14
|
-
// Create SDK instance based on the provided configurations
|
|
15
|
-
//
|
|
16
|
-
function SplitFactoryOnline(context, readyTrackers, mainClientMetricCollectors) {
|
|
17
|
-
const sharedInstance = !!mainClientMetricCollectors;
|
|
18
|
-
const settings = context.get(context.constants.SETTINGS);
|
|
19
|
-
const readiness = context.get(context.constants.READINESS);
|
|
20
|
-
const storage = context.get(context.constants.STORAGE);
|
|
21
|
-
const statusManager = context.get(context.constants.STATUS_MANAGER);
|
|
22
|
-
|
|
23
|
-
// We are only interested in exposable EventEmitter
|
|
24
|
-
const { gate, splits, segments } = readiness;
|
|
25
|
-
|
|
26
|
-
// Events name
|
|
27
|
-
const { SDK_READY } = gate;
|
|
28
|
-
|
|
29
|
-
// Shared instances use parent metrics collectors
|
|
30
|
-
const metrics = sharedInstance ? undefined : MetricsFactory(context);
|
|
31
|
-
// Shared instances use parent events queue
|
|
32
|
-
const events = sharedInstance ? undefined : EventsFactory(context);
|
|
33
|
-
|
|
34
|
-
let syncManager;
|
|
35
|
-
|
|
36
|
-
switch (settings.mode) {
|
|
37
|
-
case PRODUCER_MODE:
|
|
38
|
-
case STANDALONE_MODE: {
|
|
39
|
-
context.put(context.constants.COLLECTORS, metrics && metrics.collectors);
|
|
40
|
-
// We don't fully instantiate syncManager if we are creating a shared instance.
|
|
41
|
-
if (sharedInstance) {
|
|
42
|
-
syncManager = syncManagers[settings.core.authorizationKey].shared(context);
|
|
43
|
-
} else {
|
|
44
|
-
syncManager = SyncManagerFactory(context);
|
|
45
|
-
syncManagers[settings.core.authorizationKey] = syncManager;
|
|
46
|
-
}
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
case CONSUMER_MODE: {
|
|
50
|
-
context.put(context.constants.READY_FROM_CACHE, true); // For SDK inner workings it's supposed to be ready from cache.
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Signal listener only needed for main instances
|
|
56
|
-
const signalsListener = sharedInstance ? undefined : new SignalsListener(context, syncManager);
|
|
57
|
-
|
|
58
|
-
if (readyTrackers && syncManager && !sharedInstance) { // Only track ready events for non-shared and non-consumer clients
|
|
59
|
-
const {
|
|
60
|
-
sdkReadyTracker, splitsReadyTracker, segmentsReadyTracker
|
|
61
|
-
} = readyTrackers;
|
|
62
|
-
|
|
63
|
-
// Defered setup of collectors for this task, as it is the only ready latency we store on BE.
|
|
64
|
-
sdkReadyTracker.setCollectorForTask(metrics.collectors);
|
|
65
|
-
|
|
66
|
-
gate.once(SDK_READY, sdkReadyTracker);
|
|
67
|
-
splits.once(splits.SDK_SPLITS_ARRIVED, splitsReadyTracker);
|
|
68
|
-
segments.once(segments.SDK_SEGMENTS_ARRIVED, segmentsReadyTracker);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Start background jobs tasks
|
|
72
|
-
syncManager && syncManager.start();
|
|
73
|
-
metrics && metrics.start();
|
|
74
|
-
events && context.put(context.constants.EVENTS, events) && events.start();
|
|
75
|
-
|
|
76
|
-
// If no collectors are stored we are on a shared instance, save main one.
|
|
77
|
-
context.put(context.constants.COLLECTORS, mainClientMetricCollectors);
|
|
78
|
-
|
|
79
|
-
const api = objectAssign(
|
|
80
|
-
// Proto linkage of the EventEmitter to prevent any change
|
|
81
|
-
Object.create(statusManager),
|
|
82
|
-
// getTreatment/s & track
|
|
83
|
-
ClientFactory(context),
|
|
84
|
-
// Utilities
|
|
85
|
-
{
|
|
86
|
-
// Destroy instance
|
|
87
|
-
destroy() {
|
|
88
|
-
// Stop background jobs
|
|
89
|
-
syncManager && syncManager.stop();
|
|
90
|
-
metrics && metrics.stop();
|
|
91
|
-
events && events.stop();
|
|
92
|
-
|
|
93
|
-
// Send impressions and events in parallel.
|
|
94
|
-
return Promise.all([
|
|
95
|
-
metrics && metrics.flush(),
|
|
96
|
-
events && events.flush()
|
|
97
|
-
]).then(function () {
|
|
98
|
-
|
|
99
|
-
// Cleanup event listeners
|
|
100
|
-
readiness.destroy();
|
|
101
|
-
signalsListener && signalsListener.stop();
|
|
102
|
-
|
|
103
|
-
// Cleanup storage
|
|
104
|
-
storage.destroy && storage.destroy();
|
|
105
|
-
// Mark the factory as destroyed.
|
|
106
|
-
context.put(context.constants.DESTROYED, true);
|
|
107
|
-
// And release the API Key and SyncManager
|
|
108
|
-
if (!sharedInstance) {
|
|
109
|
-
releaseApiKey(settings.core.authorizationKey);
|
|
110
|
-
delete syncManagers[settings.core.authorizationKey];
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
);
|
|
116
|
-
|
|
117
|
-
// We'll start the signals listener if the client is not a shared instance.
|
|
118
|
-
// For now, we will only call destroy.
|
|
119
|
-
!sharedInstance && signalsListener.start(api.destroy);
|
|
120
|
-
|
|
121
|
-
return {
|
|
122
|
-
api,
|
|
123
|
-
metricCollectors: metrics && metrics.collectors
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export default SplitFactoryOnline;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { truncateTimeFrame } from '../utils/time';
|
|
2
|
-
import objectAssign from 'object-assign';
|
|
3
|
-
|
|
4
|
-
class ImpressionCounter {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.cache = {};
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Builds key to be stored in the cache with the featureName and the timeFrame truncated.
|
|
11
|
-
*/
|
|
12
|
-
_makeKey(featureName, timeFrame) {
|
|
13
|
-
return `${featureName}::${truncateTimeFrame(timeFrame)}`;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Increments the quantity of impressions with the passed featureName and timeFrame.
|
|
18
|
-
*/
|
|
19
|
-
inc(featureName, timeFrame, amount) {
|
|
20
|
-
const key = this._makeKey(featureName, timeFrame);
|
|
21
|
-
const currentAmount = this.cache[key];
|
|
22
|
-
this.cache[key] = currentAmount ? currentAmount + amount : amount;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Returns all the elements stored in the cache and resets the cache.
|
|
27
|
-
*/
|
|
28
|
-
popAll() {
|
|
29
|
-
const res = {};
|
|
30
|
-
objectAssign(res, this.cache);
|
|
31
|
-
this.cache = {};
|
|
32
|
-
return res;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Returns how many keys are stored in cache.
|
|
37
|
-
*/
|
|
38
|
-
size() {
|
|
39
|
-
return Object.keys(this.cache).length;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export default ImpressionCounter;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import ImpressionObserver from './observer';
|
|
2
|
-
import { hashImpression32 } from '../hasher/hashImpression32';
|
|
3
|
-
|
|
4
|
-
const LAST_SEEN_CACHE_SIZE = 500; // cache up to 500 impression hashes
|
|
5
|
-
|
|
6
|
-
const BrowserImpressionObserverFactory = () => new ImpressionObserver(LAST_SEEN_CACHE_SIZE, hashImpression32);
|
|
7
|
-
|
|
8
|
-
export default BrowserImpressionObserverFactory;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import ImpressionObserver from './observer';
|
|
2
|
-
import { hashImpression128 } from '../hasher/hashImpression128';
|
|
3
|
-
|
|
4
|
-
const LAST_SEEN_CACHE_SIZE = 500000; // cache up to 500k impression hashes
|
|
5
|
-
|
|
6
|
-
const NodeImpressionObserverFactory = () => new ImpressionObserver(LAST_SEEN_CACHE_SIZE, hashImpression128);
|
|
7
|
-
|
|
8
|
-
export default NodeImpressionObserverFactory;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import LRU from '../../utils/lrucache/lrucache';
|
|
2
|
-
|
|
3
|
-
class ImpressionObserver {
|
|
4
|
-
constructor(size, hasher) {
|
|
5
|
-
this.cache = new LRU(size);
|
|
6
|
-
this.hasher = hasher;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
testAndSet(impression) {
|
|
10
|
-
const hash = this.hasher(impression);
|
|
11
|
-
const previous = this.cache.get(hash);
|
|
12
|
-
this.cache.set(hash, impression.time);
|
|
13
|
-
return previous;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export default ImpressionObserver;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import GaToSplit from './ga/GaToSplit';
|
|
2
|
-
import SplitToGa from './ga/SplitToGa';
|
|
3
|
-
import { GOOGLE_ANALYTICS_TO_SPLIT, SPLIT_TO_GOOGLE_ANALYTICS, SPLIT_IMPRESSION, SPLIT_EVENT } from '../utils/constants';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Factory function for browser IntegrationsManager.
|
|
7
|
-
* The integrations manager instantiates integration modules, and bypass tracked events and impressions to them.
|
|
8
|
-
*
|
|
9
|
-
* @param {Context} context SplitFactory context
|
|
10
|
-
*
|
|
11
|
-
* @returns integration manager or null if `integrations` are not present in settings.
|
|
12
|
-
*/
|
|
13
|
-
const integrationsManagerFactory = context => {
|
|
14
|
-
const settings = context.get(context.constants.SETTINGS);
|
|
15
|
-
|
|
16
|
-
const listeners = [];
|
|
17
|
-
|
|
18
|
-
// No need to check if `settings.integrations` is an array. It was already validated in settings validation
|
|
19
|
-
settings.integrations.forEach(integrationOptions => {
|
|
20
|
-
const { type } = integrationOptions;
|
|
21
|
-
let integration;
|
|
22
|
-
|
|
23
|
-
switch (type) {
|
|
24
|
-
case GOOGLE_ANALYTICS_TO_SPLIT: {
|
|
25
|
-
const storage = context.get(context.constants.STORAGE);
|
|
26
|
-
const coreSettings = settings.core;
|
|
27
|
-
integration = GaToSplit(integrationOptions, storage, coreSettings);
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
case SPLIT_TO_GOOGLE_ANALYTICS: {
|
|
32
|
-
integration = new SplitToGa(integrationOptions);
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (integration && integration.queue)
|
|
38
|
-
listeners.push(integration);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
// If `listeners` is empty, not return a integration manager
|
|
42
|
-
if (listeners.length === 0)
|
|
43
|
-
return;
|
|
44
|
-
|
|
45
|
-
// Exception safe methods: each integration module is responsable for handling errors
|
|
46
|
-
return {
|
|
47
|
-
handleImpression: function (impressionData) {
|
|
48
|
-
listeners.forEach(listener => listener.queue({ type: SPLIT_IMPRESSION, payload: impressionData }));
|
|
49
|
-
},
|
|
50
|
-
handleEvent: function (eventData) {
|
|
51
|
-
listeners.forEach(listener => listener.queue({ type: SPLIT_EVENT, payload: eventData }));
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export default integrationsManagerFactory;
|