@splitsoftware/splitio 10.17.1 → 10.17.3-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.txt +4 -0
- package/client/package.json +5 -0
- package/es/factory/browser.js +58 -0
- package/es/factory/node.js +59 -0
- package/es/{client → factory}/package.json +0 -0
- package/es/index.js +1 -132
- package/es/platform/EventEmitter.js +412 -0
- package/es/platform/browser.js +10 -0
- package/es/{services → platform}/getEventSource/browser.js +1 -1
- package/es/{services → platform}/getEventSource/node.js +1 -1
- package/es/{impressions/observer → platform/getEventSource}/package.json +0 -0
- package/es/{services → platform}/getFetch/browser.js +1 -1
- package/es/{services → platform}/getFetch/node.js +1 -1
- 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/{services → platform}/request/options/node.js +2 -2
- package/es/settings/browser.js +18 -0
- package/{lib/utils → es}/settings/defaults/browser.js +6 -8
- package/{src/utils → es}/settings/defaults/node.js +6 -3
- package/es/settings/defaults/version.js +1 -0
- package/es/settings/integrations/browser.js +5 -0
- package/es/settings/integrations/node.js +5 -0
- package/es/settings/node.js +20 -0
- package/es/{producer/offline → settings}/package.json +0 -0
- package/es/{utils/settings → settings}/runtime/node.js +6 -4
- package/es/{utils/settings → settings}/storage/browser.js +16 -17
- package/es/{utils/settings → settings}/storage/node.js +25 -16
- package/es/umd.js +2 -1
- package/lib/factory/browser.js +79 -0
- package/lib/factory/node.js +78 -0
- package/{es/producer → lib/factory}/package.json +0 -0
- package/lib/index.js +3 -151
- package/lib/platform/EventEmitter.js +417 -0
- package/lib/platform/browser.js +21 -0
- package/lib/{services → platform}/getEventSource/browser.js +1 -1
- package/lib/{services → platform}/getEventSource/node.js +1 -1
- package/{es/services → lib/platform}/getEventSource/package.json +0 -0
- package/lib/{services → platform}/getFetch/browser.js +1 -1
- package/lib/{services → platform}/getFetch/node.js +1 -1
- package/{es/services → lib/platform}/getFetch/package.json +0 -0
- package/lib/platform/node.js +26 -0
- package/{es/services/request/options → lib/platform}/package.json +0 -0
- package/lib/{services → platform}/request/options/node.js +2 -2
- package/lib/settings/browser.js +30 -0
- package/{src/utils → lib}/settings/defaults/browser.js +13 -3
- package/{es/utils → lib}/settings/defaults/node.js +13 -3
- package/lib/settings/defaults/version.js +6 -0
- package/lib/settings/integrations/browser.js +14 -0
- package/lib/settings/integrations/node.js +12 -0
- package/lib/settings/node.js +33 -0
- package/{es/services/splitChanges/offline → lib/settings}/package.json +0 -0
- package/lib/{utils/settings → settings}/runtime/node.js +7 -5
- package/lib/{utils/settings → settings}/storage/browser.js +20 -24
- package/lib/{utils/settings → settings}/storage/node.js +26 -17
- package/lib/umd.js +1 -0
- package/package.json +20 -16
- package/server/package.json +5 -0
- package/src/.DS_Store +0 -0
- package/src/factory/browser.js +74 -0
- package/src/factory/node.js +71 -0
- package/{es/storage/SegmentCache/InMemory → src/factory}/package.json +0 -0
- package/src/index.js +1 -140
- package/src/{sync/SSEHandler → platform}/.DS_Store +0 -0
- package/src/platform/EventEmitter.js +443 -0
- package/src/platform/browser.js +12 -0
- package/src/{services → 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/{services → platform}/request/options/node.js +2 -2
- package/src/{listeners → settings}/.DS_Store +0 -0
- package/src/settings/browser.js +18 -0
- package/{es/utils → src}/settings/defaults/browser.js +8 -3
- 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/{utils/settings → settings}/integrations/node.js +1 -3
- package/src/settings/node.js +20 -0
- package/{es/sync → src/settings}/package.json +0 -0
- package/src/{utils/settings → settings}/runtime/node.js +9 -6
- package/src/{utils/settings → settings}/storage/browser.js +13 -18
- package/src/{utils/settings → settings}/storage/node.js +19 -14
- 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/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/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/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/package.json +0 -4
- 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/package.json +0 -4
- 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/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/package.json +0 -4
- 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/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/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/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/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/package.json +0 -4
- 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,188 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-fallthrough */
|
|
2
|
-
import { UTF16ToUTF8, x86Fmix, x86Multiply, x86Rotl } from './common';
|
|
3
|
-
|
|
4
|
-
/*!
|
|
5
|
-
* +----------------------------------------------------------------------------------+
|
|
6
|
-
* | murmurHash3.js v3.0.0 (http://github.com/karanlyons/murmurHash3.js) |
|
|
7
|
-
* | A TypeScript/JavaScript implementation of MurmurHash3's hashing algorithms. |
|
|
8
|
-
* |----------------------------------------------------------------------------------|
|
|
9
|
-
* | Copyright (c) 2012-2020 Karan Lyons. Freely distributable under the MIT license. |
|
|
10
|
-
* +----------------------------------------------------------------------------------+
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
// PUBLIC FUNCTIONS
|
|
14
|
-
// ----------------
|
|
15
|
-
function hash128x86(key /*: string */, seed /*: number */) /*: string */ {
|
|
16
|
-
//
|
|
17
|
-
// Given a string and an optional seed as an int, returns a 128 bit
|
|
18
|
-
// hash using the x86 flavor of MurmurHash3, as an unsigned hex.
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
key = key || '';
|
|
22
|
-
seed = seed || 0;
|
|
23
|
-
|
|
24
|
-
var remainder = key.length % 16;
|
|
25
|
-
var bytes = key.length - remainder;
|
|
26
|
-
|
|
27
|
-
var h1 = seed;
|
|
28
|
-
var h2 = seed;
|
|
29
|
-
var h3 = seed;
|
|
30
|
-
var h4 = seed;
|
|
31
|
-
|
|
32
|
-
var k1 = 0;
|
|
33
|
-
var k2 = 0;
|
|
34
|
-
var k3 = 0;
|
|
35
|
-
var k4 = 0;
|
|
36
|
-
|
|
37
|
-
var c1 = 0x239b961b;
|
|
38
|
-
var c2 = 0xab0e9789;
|
|
39
|
-
var c3 = 0x38b34ae5;
|
|
40
|
-
var c4 = 0xa1e38b93;
|
|
41
|
-
|
|
42
|
-
for (var i = 0; i < bytes; i = i + 16) {
|
|
43
|
-
k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);
|
|
44
|
-
k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);
|
|
45
|
-
k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);
|
|
46
|
-
k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);
|
|
47
|
-
|
|
48
|
-
k1 = x86Multiply(k1, c1);
|
|
49
|
-
k1 = x86Rotl(k1, 15);
|
|
50
|
-
k1 = x86Multiply(k1, c2);
|
|
51
|
-
h1 ^= k1;
|
|
52
|
-
|
|
53
|
-
h1 = x86Rotl(h1, 19);
|
|
54
|
-
h1 += h2;
|
|
55
|
-
h1 = x86Multiply(h1, 5) + 0x561ccd1b;
|
|
56
|
-
|
|
57
|
-
k2 = x86Multiply(k2, c2);
|
|
58
|
-
k2 = x86Rotl(k2, 16);
|
|
59
|
-
k2 = x86Multiply(k2, c3);
|
|
60
|
-
h2 ^= k2;
|
|
61
|
-
|
|
62
|
-
h2 = x86Rotl(h2, 17);
|
|
63
|
-
h2 += h3;
|
|
64
|
-
h2 = x86Multiply(h2, 5) + 0x0bcaa747;
|
|
65
|
-
|
|
66
|
-
k3 = x86Multiply(k3, c3);
|
|
67
|
-
k3 = x86Rotl(k3, 17);
|
|
68
|
-
k3 = x86Multiply(k3, c4);
|
|
69
|
-
h3 ^= k3;
|
|
70
|
-
|
|
71
|
-
h3 = x86Rotl(h3, 15);
|
|
72
|
-
h3 += h4;
|
|
73
|
-
h3 = x86Multiply(h3, 5) + 0x96cd1c35;
|
|
74
|
-
|
|
75
|
-
k4 = x86Multiply(k4, c4);
|
|
76
|
-
k4 = x86Rotl(k4, 18);
|
|
77
|
-
k4 = x86Multiply(k4, c1);
|
|
78
|
-
h4 ^= k4;
|
|
79
|
-
|
|
80
|
-
h4 = x86Rotl(h4, 13);
|
|
81
|
-
h4 += h1;
|
|
82
|
-
h4 = x86Multiply(h4, 5) + 0x32ac3b17;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
k1 = 0;
|
|
86
|
-
k2 = 0;
|
|
87
|
-
k3 = 0;
|
|
88
|
-
k4 = 0;
|
|
89
|
-
|
|
90
|
-
switch (remainder) {
|
|
91
|
-
case 15:
|
|
92
|
-
k4 ^= key.charCodeAt(i + 14) << 16;
|
|
93
|
-
|
|
94
|
-
case 14:
|
|
95
|
-
k4 ^= key.charCodeAt(i + 13) << 8;
|
|
96
|
-
|
|
97
|
-
case 13:
|
|
98
|
-
k4 ^= key.charCodeAt(i + 12);
|
|
99
|
-
k4 = x86Multiply(k4, c4);
|
|
100
|
-
k4 = x86Rotl(k4, 18);
|
|
101
|
-
k4 = x86Multiply(k4, c1);
|
|
102
|
-
h4 ^= k4;
|
|
103
|
-
|
|
104
|
-
case 12:
|
|
105
|
-
k3 ^= key.charCodeAt(i + 11) << 24;
|
|
106
|
-
|
|
107
|
-
case 11:
|
|
108
|
-
k3 ^= key.charCodeAt(i + 10) << 16;
|
|
109
|
-
|
|
110
|
-
case 10:
|
|
111
|
-
k3 ^= key.charCodeAt(i + 9) << 8;
|
|
112
|
-
|
|
113
|
-
case 9:
|
|
114
|
-
k3 ^= key.charCodeAt(i + 8);
|
|
115
|
-
k3 = x86Multiply(k3, c3);
|
|
116
|
-
k3 = x86Rotl(k3, 17);
|
|
117
|
-
k3 = x86Multiply(k3, c4);
|
|
118
|
-
h3 ^= k3;
|
|
119
|
-
|
|
120
|
-
case 8:
|
|
121
|
-
k2 ^= key.charCodeAt(i + 7) << 24;
|
|
122
|
-
|
|
123
|
-
case 7:
|
|
124
|
-
k2 ^= key.charCodeAt(i + 6) << 16;
|
|
125
|
-
|
|
126
|
-
case 6:
|
|
127
|
-
k2 ^= key.charCodeAt(i + 5) << 8;
|
|
128
|
-
|
|
129
|
-
case 5:
|
|
130
|
-
k2 ^= key.charCodeAt(i + 4);
|
|
131
|
-
k2 = x86Multiply(k2, c2);
|
|
132
|
-
k2 = x86Rotl(k2, 16);
|
|
133
|
-
k2 = x86Multiply(k2, c3);
|
|
134
|
-
h2 ^= k2;
|
|
135
|
-
|
|
136
|
-
case 4:
|
|
137
|
-
k1 ^= key.charCodeAt(i + 3) << 24;
|
|
138
|
-
|
|
139
|
-
case 3:
|
|
140
|
-
k1 ^= key.charCodeAt(i + 2) << 16;
|
|
141
|
-
|
|
142
|
-
case 2:
|
|
143
|
-
k1 ^= key.charCodeAt(i + 1) << 8;
|
|
144
|
-
|
|
145
|
-
case 1:
|
|
146
|
-
k1 ^= key.charCodeAt(i);
|
|
147
|
-
k1 = x86Multiply(k1, c1);
|
|
148
|
-
k1 = x86Rotl(k1, 15);
|
|
149
|
-
k1 = x86Multiply(k1, c2);
|
|
150
|
-
h1 ^= k1;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
h1 ^= key.length;
|
|
154
|
-
h2 ^= key.length;
|
|
155
|
-
h3 ^= key.length;
|
|
156
|
-
h4 ^= key.length;
|
|
157
|
-
|
|
158
|
-
h1 += h2;
|
|
159
|
-
h1 += h3;
|
|
160
|
-
h1 += h4;
|
|
161
|
-
h2 += h1;
|
|
162
|
-
h3 += h1;
|
|
163
|
-
h4 += h1;
|
|
164
|
-
|
|
165
|
-
h1 = x86Fmix(h1);
|
|
166
|
-
h2 = x86Fmix(h2);
|
|
167
|
-
h3 = x86Fmix(h3);
|
|
168
|
-
h4 = x86Fmix(h4);
|
|
169
|
-
|
|
170
|
-
h1 += h2;
|
|
171
|
-
h1 += h3;
|
|
172
|
-
h1 += h4;
|
|
173
|
-
h2 += h1;
|
|
174
|
-
h3 += h1;
|
|
175
|
-
h4 += h1;
|
|
176
|
-
|
|
177
|
-
return ('00000000' + (h1 >>> 0).toString(16)).slice(-8) + ('00000000' + (h2 >>> 0).toString(16)).slice(-8) + ('00000000' + (h3 >>> 0).toString(16)).slice(-8) + ('00000000' + (h4 >>> 0).toString(16)).slice(-8);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* x86 version of Murmur3 for 128bits.
|
|
182
|
-
* Used by hashImpression128 because in JS it is more efficient than the x64 version, no matter the underlying OS/CPU arch.
|
|
183
|
-
*
|
|
184
|
-
* @param {string} str
|
|
185
|
-
*/
|
|
186
|
-
export function hash128(str /*: string */, seed /*: number */) /*: string */ {
|
|
187
|
-
return hash128x86(UTF16ToUTF8(str), seed >>> 0);
|
|
188
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { hash128 } from './murmur3_128';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Use instead of parseInt, to not lose precision when converting big integers (greater than 2^53 - 1)
|
|
5
|
-
*/
|
|
6
|
-
function hex2dec(s /*: string */) /*: string */ {
|
|
7
|
-
let i, j, digits = [0], carry;
|
|
8
|
-
for (i = 0; i < s.length; i += 1) {
|
|
9
|
-
carry = parseInt(s.charAt(i), 16);
|
|
10
|
-
for (j = digits.length - 1; j >= 0; j -= 1) {
|
|
11
|
-
digits[j] = digits[j] * 16 + carry;
|
|
12
|
-
carry = digits[j] / 10 | 0;
|
|
13
|
-
digits[j] %= 10;
|
|
14
|
-
}
|
|
15
|
-
while (carry > 0) {
|
|
16
|
-
digits.unshift(carry % 10);
|
|
17
|
-
carry = carry / 10 | 0;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return digits.join('');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Gets the higher 64 bits of the x64 version of Murmur3 for 128bits, as decimal and hexadecimal number strings.
|
|
25
|
-
* Used for MySegments channel V2 notifications.
|
|
26
|
-
* @param {string} str
|
|
27
|
-
*/
|
|
28
|
-
export function hash64(str /*: string */) /*: { hex: string, dec: string } */ {
|
|
29
|
-
const hex = hash128(str).slice(0, 16);
|
|
30
|
-
return {
|
|
31
|
-
hex, // BoundedFetchRequest notification
|
|
32
|
-
dec: hex2dec(hex) // KeyList notification
|
|
33
|
-
};
|
|
34
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Trimmed version of "utfx" library (https://www.npmjs.com/package/utfx/v/1.0.1) used to encode,
|
|
3
|
-
decode and convert UTF8 / UTF16 in JavaScript, with the minimal methods used by the SDK.
|
|
4
|
-
|
|
5
|
-
utfx (c) 2014 Daniel Wirtz <dcode@dcode.io>
|
|
6
|
-
Released under the Apache License, Version 2.0
|
|
7
|
-
see: https://github.com/dcodeIO/utfx for details
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Encodes UTF8 code points to UTF8 bytes.
|
|
12
|
-
* @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point
|
|
13
|
-
* respectively `null` if there are no more code points left or a single numeric code point.
|
|
14
|
-
* @param {!function(number)} dst Bytes destination as a function successively called with the next byte
|
|
15
|
-
* @expose
|
|
16
|
-
*/
|
|
17
|
-
function encodeUTF8(src, dst) {
|
|
18
|
-
var cp = null;
|
|
19
|
-
if (typeof src === 'number')
|
|
20
|
-
cp = src, src = function () { return null; };
|
|
21
|
-
while (cp !== null || (cp = src()) !== null) {
|
|
22
|
-
if (cp < 0x80)
|
|
23
|
-
dst(cp & 0x7F);
|
|
24
|
-
else if (cp < 0x800)
|
|
25
|
-
dst(((cp >> 6) & 0x1F) | 0xC0), dst((cp & 0x3F) | 0x80);
|
|
26
|
-
else if (cp < 0x10000)
|
|
27
|
-
dst(((cp >> 12) & 0x0F) | 0xE0), dst(((cp >> 6) & 0x3F) | 0x80), dst((cp & 0x3F) | 0x80);
|
|
28
|
-
else
|
|
29
|
-
dst(((cp >> 18) & 0x07) | 0xF0), dst(((cp >> 12) & 0x3F) | 0x80), dst(((cp >> 6) & 0x3F) | 0x80), dst((cp & 0x3F) | 0x80);
|
|
30
|
-
cp = null;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Converts UTF16 characters to UTF8 code points.
|
|
36
|
-
* @param {!function():number|null} src Characters source as a function returning the next char code respectively
|
|
37
|
-
* `null` if there are no more characters left.
|
|
38
|
-
* @param {!function(number)} dst Code points destination as a function successively called with each converted code
|
|
39
|
-
* point.
|
|
40
|
-
* @expose
|
|
41
|
-
*/
|
|
42
|
-
function UTF16toUTF8(src, dst) {
|
|
43
|
-
var c1, c2 = null;
|
|
44
|
-
// eslint-disable-next-line no-constant-condition
|
|
45
|
-
while (true) {
|
|
46
|
-
if ((c1 = c2 !== null ? c2 : src()) === null)
|
|
47
|
-
break;
|
|
48
|
-
if (c1 >= 0xD800 && c1 <= 0xDFFF) {
|
|
49
|
-
if ((c2 = src()) !== null) {
|
|
50
|
-
if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
|
|
51
|
-
dst((c1 - 0xD800) * 0x400 + c2 - 0xDC00 + 0x10000);
|
|
52
|
-
c2 = null; continue;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
dst(c1);
|
|
57
|
-
}
|
|
58
|
-
if (c2 !== null) dst(c2);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Converts and encodes UTF16 characters to UTF8 bytes.
|
|
63
|
-
* @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`
|
|
64
|
-
* if there are no more characters left.
|
|
65
|
-
* @param {!function(number)} dst Bytes destination as a function successively called with the next byte.
|
|
66
|
-
* @expose
|
|
67
|
-
*/
|
|
68
|
-
export function encodeUTF16toUTF8(src, dst) {
|
|
69
|
-
UTF16toUTF8(src, function (cp) {
|
|
70
|
-
encodeUTF8(cp, dst);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* String.fromCharCode reference for compile time renaming.
|
|
76
|
-
* @type {!function(...[number]):string}
|
|
77
|
-
* @inner
|
|
78
|
-
*/
|
|
79
|
-
var stringFromCharCode = String.fromCharCode;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Creates a source function for a string.
|
|
83
|
-
* @param {string} s String to read from
|
|
84
|
-
* @returns {!function():number|null} Source function returning the next char code respectively `null` if there are
|
|
85
|
-
* no more characters left.
|
|
86
|
-
* @throws {TypeError} If the argument is invalid
|
|
87
|
-
* @expose
|
|
88
|
-
*/
|
|
89
|
-
export function stringSource(s) {
|
|
90
|
-
if (typeof s !== 'string')
|
|
91
|
-
throw TypeError('Illegal argument: ' + (typeof s));
|
|
92
|
-
var i = 0; return function () {
|
|
93
|
-
return i >= s.length ? null : s.charCodeAt(i++);
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Creates a destination function for a string.
|
|
99
|
-
* @returns {function(number=):undefined|string} Destination function successively called with the next char code.
|
|
100
|
-
* Returns the final string when called without arguments.
|
|
101
|
-
* @expose
|
|
102
|
-
*/
|
|
103
|
-
export function stringDestination() {
|
|
104
|
-
const cs = [], ps = []; return function () {
|
|
105
|
-
if (arguments.length === 0)
|
|
106
|
-
return ps.join('') + stringFromCharCode.apply(String, cs);
|
|
107
|
-
if (cs.length + arguments.length > 1024)
|
|
108
|
-
ps.push(stringFromCharCode.apply(String, cs)), cs.length = 0;
|
|
109
|
-
Array.prototype.push.apply(cs, arguments);
|
|
110
|
-
};
|
|
111
|
-
}
|
|
@@ -1,148 +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 Engine from '../';
|
|
18
|
-
import thenable from '../../utils/promise/thenable';
|
|
19
|
-
import * as LabelsConstants from '../../utils/labels';
|
|
20
|
-
import { CONTROL } from '../../utils/constants';
|
|
21
|
-
|
|
22
|
-
const treatmentException = {
|
|
23
|
-
treatment: CONTROL,
|
|
24
|
-
label: LabelsConstants.EXCEPTION,
|
|
25
|
-
config: null
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export function evaluateFeature(
|
|
29
|
-
key,
|
|
30
|
-
splitName,
|
|
31
|
-
attributes,
|
|
32
|
-
storage
|
|
33
|
-
) {
|
|
34
|
-
let stringifiedSplit;
|
|
35
|
-
|
|
36
|
-
try {
|
|
37
|
-
stringifiedSplit = storage.splits.getSplit(splitName);
|
|
38
|
-
} catch (e) {
|
|
39
|
-
// the only scenario where getSplit can throw an error is when the storage
|
|
40
|
-
// is redis and there is a connection issue and we can't retrieve the split
|
|
41
|
-
// to be evaluated
|
|
42
|
-
return Promise.resolve(treatmentException);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (thenable(stringifiedSplit)) {
|
|
46
|
-
return stringifiedSplit.then((result) => getEvaluation(
|
|
47
|
-
result,
|
|
48
|
-
key,
|
|
49
|
-
attributes,
|
|
50
|
-
storage
|
|
51
|
-
));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return getEvaluation(
|
|
55
|
-
stringifiedSplit,
|
|
56
|
-
key,
|
|
57
|
-
attributes,
|
|
58
|
-
storage
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export function evaluateFeatures(
|
|
63
|
-
key,
|
|
64
|
-
splitNames,
|
|
65
|
-
attributes,
|
|
66
|
-
storage
|
|
67
|
-
) {
|
|
68
|
-
let stringifiedSplits;
|
|
69
|
-
const evaluations = {};
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
stringifiedSplits = storage.splits.fetchMany(splitNames);
|
|
73
|
-
} catch (e) {
|
|
74
|
-
// the only scenario where fetchMany can throw an error is when the storage
|
|
75
|
-
// is redis and there is a connection issue and we can't retrieve the split
|
|
76
|
-
// to be evaluated
|
|
77
|
-
splitNames.forEach(splitName => {
|
|
78
|
-
evaluations[splitName] = treatmentException;
|
|
79
|
-
});
|
|
80
|
-
return Promise.resolve(evaluations);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return (thenable(stringifiedSplits)) ?
|
|
84
|
-
stringifiedSplits.then(splits => getEvaluations(splitNames, splits, key, attributes, storage)) :
|
|
85
|
-
getEvaluations(splitNames, stringifiedSplits, key, attributes, storage);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
function getEvaluation(
|
|
89
|
-
stringifiedSplit,
|
|
90
|
-
key,
|
|
91
|
-
attributes,
|
|
92
|
-
storage
|
|
93
|
-
) {
|
|
94
|
-
let evaluation = {
|
|
95
|
-
treatment: CONTROL,
|
|
96
|
-
label: LabelsConstants.SPLIT_NOT_FOUND,
|
|
97
|
-
config: null
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
if (stringifiedSplit) {
|
|
101
|
-
const splitJSON = JSON.parse(stringifiedSplit);
|
|
102
|
-
const split = Engine.parse(splitJSON, storage);
|
|
103
|
-
evaluation = split.getTreatment(key, attributes, evaluateFeature);
|
|
104
|
-
|
|
105
|
-
// If the storage is async and the evaluated split uses segment, evaluation is thenable
|
|
106
|
-
if (thenable(evaluation)) {
|
|
107
|
-
return evaluation.then(result => {
|
|
108
|
-
result.changeNumber = split.getChangeNumber();
|
|
109
|
-
result.config = splitJSON.configurations && splitJSON.configurations[result.treatment] || null;
|
|
110
|
-
|
|
111
|
-
return result;
|
|
112
|
-
});
|
|
113
|
-
} else {
|
|
114
|
-
evaluation.changeNumber = split.getChangeNumber(); // Always sync and optional
|
|
115
|
-
evaluation.config = splitJSON.configurations && splitJSON.configurations[evaluation.treatment] || null;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return evaluation;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function getEvaluations(
|
|
123
|
-
splitNames,
|
|
124
|
-
splits,
|
|
125
|
-
key,
|
|
126
|
-
attributes,
|
|
127
|
-
storage
|
|
128
|
-
) {
|
|
129
|
-
const result = {};
|
|
130
|
-
const thenables = [];
|
|
131
|
-
splitNames.forEach(splitName => {
|
|
132
|
-
const evaluation = getEvaluation(
|
|
133
|
-
splits[splitName],
|
|
134
|
-
key,
|
|
135
|
-
attributes,
|
|
136
|
-
storage
|
|
137
|
-
);
|
|
138
|
-
if (thenable(evaluation)) {
|
|
139
|
-
thenables.push(evaluation.then(res => {
|
|
140
|
-
result[splitName] = res;
|
|
141
|
-
}));
|
|
142
|
-
} else {
|
|
143
|
-
result[splitName] = evaluation;
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
return thenables.length > 0 ? Promise.all(thenables).then(() => result) : result;
|
|
148
|
-
}
|
package/src/engine/index.js
DELETED
|
@@ -1,123 +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 objectAssign from 'object-assign';
|
|
18
|
-
import { get } from '../utils/lang';
|
|
19
|
-
import parser from './parser';
|
|
20
|
-
import keyParser from '../utils/key/parser';
|
|
21
|
-
import thenable from '../utils/promise/thenable';
|
|
22
|
-
import * as LabelsConstants from '../utils/labels';
|
|
23
|
-
import { CONTROL } from '../utils/constants';
|
|
24
|
-
|
|
25
|
-
function defaults(inst) {
|
|
26
|
-
// in case we don't have a default treatment in the instanciation, use 'control'
|
|
27
|
-
if (typeof inst.baseInfo.defaultTreatment !== 'string') {
|
|
28
|
-
inst.baseInfo.defaultTreatment = CONTROL;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function evaluationResult(result, defaultTreatment) {
|
|
33
|
-
return {
|
|
34
|
-
treatment: get(result, 'treatment', defaultTreatment),
|
|
35
|
-
label: get(result, 'label', LabelsConstants.NO_CONDITION_MATCH)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function Split(baseInfo, evaluator) {
|
|
40
|
-
if (!(this instanceof Split)) {
|
|
41
|
-
return new Split(baseInfo, evaluator);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this.baseInfo = baseInfo;
|
|
45
|
-
this.evaluator = evaluator;
|
|
46
|
-
|
|
47
|
-
defaults(this);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
Split.parse = function parse(splitFlatStructure, storage) {
|
|
51
|
-
const conditions = splitFlatStructure.conditions;
|
|
52
|
-
const evaluator = parser(conditions, storage);
|
|
53
|
-
|
|
54
|
-
return new Split(objectAssign({}, splitFlatStructure), evaluator);
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
Split.prototype.getKey = function getKey() {
|
|
58
|
-
return this.baseInfo.name;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
Split.prototype.getTreatment = function getTreatment(key, attributes, splitEvaluator) {
|
|
62
|
-
const {
|
|
63
|
-
killed,
|
|
64
|
-
seed,
|
|
65
|
-
defaultTreatment,
|
|
66
|
-
trafficAllocation,
|
|
67
|
-
trafficAllocationSeed,
|
|
68
|
-
algo
|
|
69
|
-
} = this.baseInfo;
|
|
70
|
-
let parsedKey;
|
|
71
|
-
let treatment;
|
|
72
|
-
let label;
|
|
73
|
-
|
|
74
|
-
try {
|
|
75
|
-
parsedKey = keyParser(key);
|
|
76
|
-
} catch (err) {
|
|
77
|
-
return {
|
|
78
|
-
treatment: CONTROL,
|
|
79
|
-
label: LabelsConstants.EXCEPTION
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (this.isGarbage()) {
|
|
84
|
-
treatment = CONTROL;
|
|
85
|
-
label = LabelsConstants.SPLIT_ARCHIVED;
|
|
86
|
-
} else if (killed) {
|
|
87
|
-
treatment = defaultTreatment;
|
|
88
|
-
label = LabelsConstants.SPLIT_KILLED;
|
|
89
|
-
} else {
|
|
90
|
-
const evaluation = this.evaluator(
|
|
91
|
-
parsedKey,
|
|
92
|
-
seed,
|
|
93
|
-
trafficAllocation,
|
|
94
|
-
trafficAllocationSeed,
|
|
95
|
-
attributes,
|
|
96
|
-
algo,
|
|
97
|
-
splitEvaluator
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
// Evaluation could be async, so we should handle that case checking for a
|
|
101
|
-
// thenable object
|
|
102
|
-
if (thenable(evaluation)) {
|
|
103
|
-
return evaluation.then(result => evaluationResult(result, defaultTreatment));
|
|
104
|
-
} else {
|
|
105
|
-
return evaluationResult(evaluation, defaultTreatment);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return {
|
|
110
|
-
treatment,
|
|
111
|
-
label
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
Split.prototype.isGarbage = function isGarbage() {
|
|
116
|
-
return this.baseInfo.status === 'ARCHIVED';
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
Split.prototype.getChangeNumber = function getChangeNumber() {
|
|
120
|
-
return this.baseInfo.changeNumber;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
export default Split;
|
|
@@ -1,29 +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 logFactory from '../../utils/logger';
|
|
17
|
-
const log = logFactory('splitio-engine:matcher');
|
|
18
|
-
|
|
19
|
-
function allMatcher(runtimeAttr /*: string */) /*: boolean */ {
|
|
20
|
-
log.debug('[allMatcher] is always true');
|
|
21
|
-
|
|
22
|
-
return runtimeAttr != null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function allMatcherContext() {
|
|
26
|
-
return allMatcher;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default allMatcherContext;
|
|
@@ -1,30 +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 logFactory from '../../utils/logger';
|
|
17
|
-
const log = logFactory('splitio-engine:matcher');
|
|
18
|
-
|
|
19
|
-
function betweenMatcherContext(ruleVO /*: betweenObject */) /*: Function */ {
|
|
20
|
-
return function betweenMatcher(runtimeAttr /*: number */) /*: boolean */ {
|
|
21
|
-
|
|
22
|
-
let isBetween = runtimeAttr >= ruleVO.start && runtimeAttr <= ruleVO.end;
|
|
23
|
-
|
|
24
|
-
log.debug(`[betweenMatcher] is ${runtimeAttr} between ${ruleVO.start} and ${ruleVO.end}? ${isBetween}`);
|
|
25
|
-
|
|
26
|
-
return isBetween;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default betweenMatcherContext;
|
|
@@ -1,29 +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 logFactory from '../../utils/logger';
|
|
17
|
-
const log = logFactory('splitio-engine:matcher');
|
|
18
|
-
|
|
19
|
-
function booleanMatcherContext(ruleAttr /*: bool */) /*: Function */ {
|
|
20
|
-
return function booleanMatcher(runtimeAttr /*: bool */) /*: bool */ {
|
|
21
|
-
let booleanMatches = ruleAttr === runtimeAttr;
|
|
22
|
-
|
|
23
|
-
log.debug(`[booleanMatcher] ${ruleAttr} === ${runtimeAttr}`);
|
|
24
|
-
|
|
25
|
-
return booleanMatches;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default booleanMatcherContext;
|