@splitsoftware/splitio 10.17.3 → 10.17.4-rc.2
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 +12 -0
- package/es/factory/browser.js +67 -0
- package/es/factory/node.js +63 -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 +21 -0
- package/es/settings/defaults/browser.js +18 -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 +18 -0
- package/es/{producer/offline → settings}/package.json +0 -0
- package/es/settings/runtime/node.js +17 -0
- package/es/settings/storage/browser.js +29 -0
- package/es/settings/storage/node.js +63 -0
- package/es/umd.js +2 -1
- package/lib/factory/browser.js +71 -0
- package/lib/factory/node.js +67 -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 +25 -0
- package/lib/settings/defaults/browser.js +21 -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 +22 -0
- package/{es/services/splitChanges/offline → lib/settings}/package.json +0 -0
- package/lib/settings/runtime/node.js +22 -0
- package/lib/settings/storage/browser.js +33 -0
- package/lib/settings/storage/node.js +67 -0
- package/lib/umd.js +4 -8
- package/package.json +26 -30
- package/src/.DS_Store +0 -0
- package/src/factory/browser.js +84 -0
- package/src/factory/node.js +78 -0
- package/{es/storage/SegmentCache/InMemory → src/factory}/package.json +0 -0
- package/src/index.js +13 -136
- package/src/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/settings/.DS_Store +0 -0
- package/src/settings/browser.js +23 -0
- package/{lib/utils → src}/settings/defaults/browser.js +10 -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 +20 -0
- package/{es/sync → src/settings}/package.json +0 -0
- package/src/settings/runtime/node.js +21 -0
- package/src/settings/storage/browser.js +43 -0
- package/src/{utils/settings → settings}/storage/node.js +23 -34
- package/src/umd.js +1 -0
- package/types/splitio.d.ts +145 -10
- 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 -58
- 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 -162
- 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 -69
- 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 -171
- 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/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 -52
- 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 -140
- 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/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
package/src/sync/constants.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// time for refresh token
|
|
2
|
-
export const SECONDS_BEFORE_EXPIRATION = 600;
|
|
3
|
-
|
|
4
|
-
// Internal SDK events, subscribed by SyncManager and PushManager
|
|
5
|
-
/**
|
|
6
|
-
* emitted on SSE and Authenticate non-recoverable errors, STREAMING_DISABLED control notification and authentication with pushEnabled false
|
|
7
|
-
* triggers `handleNonRetryableError` call
|
|
8
|
-
*/
|
|
9
|
-
export const PUSH_NONRETRYABLE_ERROR = 'PUSH_NONRETRYABLE_ERROR';
|
|
10
|
-
/**
|
|
11
|
-
* emitted on SSE and Authenticate recoverable errors
|
|
12
|
-
* triggers `handleRetryableError` call
|
|
13
|
-
*/
|
|
14
|
-
export const PUSH_RETRYABLE_ERROR = 'PUSH_RETRYABLE_ERROR';
|
|
15
|
-
/**
|
|
16
|
-
* emitted on STREAMING_RESUMED control notification, OCCUPANCY different than 0, and SSE onopen event
|
|
17
|
-
* triggers `stopPollingAndSyncAll` call
|
|
18
|
-
*/
|
|
19
|
-
export const PUSH_SUBSYSTEM_UP = 'PUSH_SUBSYSTEM_UP';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* emitted on STREAMING_PAUSED control notification, OCCUPANCY equal to 0, PUSH_NONRETRYABLE_ERROR and PUSH_RETRYABLE_ERROR events.
|
|
23
|
-
* triggers `startPolling` and `stopWorkers` calls
|
|
24
|
-
*/
|
|
25
|
-
export const PUSH_SUBSYSTEM_DOWN = 'PUSH_SUBSYSTEM_DOWN';
|
|
26
|
-
|
|
27
|
-
// Update-type push notifications, handled by NotificationProcessor
|
|
28
|
-
export const MY_SEGMENTS_UPDATE = 'MY_SEGMENTS_UPDATE';
|
|
29
|
-
export const MY_SEGMENTS_UPDATE_V2 = 'MY_SEGMENTS_UPDATE_V2';
|
|
30
|
-
export const SEGMENT_UPDATE = 'SEGMENT_UPDATE';
|
|
31
|
-
export const SPLIT_KILL = 'SPLIT_KILL';
|
|
32
|
-
export const SPLIT_UPDATE = 'SPLIT_UPDATE';
|
|
33
|
-
|
|
34
|
-
// Control-type push notifications, handled by NotificationKeeper
|
|
35
|
-
export const CONTROL = 'CONTROL';
|
|
36
|
-
export const OCCUPANCY = 'OCCUPANCY';
|
|
37
|
-
|
|
38
|
-
export const ControlTypes = {
|
|
39
|
-
STREAMING_DISABLED: 'STREAMING_DISABLED',
|
|
40
|
-
STREAMING_PAUSED: 'STREAMING_PAUSED',
|
|
41
|
-
STREAMING_RESUMED: 'STREAMING_RESUMED',
|
|
42
|
-
STREAMING_RESET: 'STREAMING_RESET'
|
|
43
|
-
};
|
package/src/sync/node.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import PushManagerFactory from './PushManager';
|
|
2
|
-
import FullProducerFactory from '../producer';
|
|
3
|
-
import logFactory from '../utils/logger';
|
|
4
|
-
import { PUSH_SUBSYSTEM_DOWN, PUSH_SUBSYSTEM_UP } from './constants';
|
|
5
|
-
const log = logFactory('splitio-sync:sync-manager');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Factory of SyncManager for node
|
|
9
|
-
*
|
|
10
|
-
* @param context main client context
|
|
11
|
-
*/
|
|
12
|
-
export default function NodeSyncManagerFactory(context) {
|
|
13
|
-
|
|
14
|
-
const producer = FullProducerFactory(context);
|
|
15
|
-
const settings = context.get(context.constants.SETTINGS);
|
|
16
|
-
|
|
17
|
-
// add producer into the context before creating the PushManager
|
|
18
|
-
context.put(context.constants.PRODUCER, producer);
|
|
19
|
-
const pushManager = settings.streamingEnabled ? PushManagerFactory(context) : undefined;
|
|
20
|
-
|
|
21
|
-
function startPolling() {
|
|
22
|
-
if (!producer.isRunning()) {
|
|
23
|
-
log.info('Streaming not available. Starting periodic fetch of data.');
|
|
24
|
-
producer.start();
|
|
25
|
-
} else {
|
|
26
|
-
log.info('Streaming couldn\'t connect. Continue periodic fetch of data.');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function stopPollingAndSyncAll() {
|
|
31
|
-
log.info('PUSH (re)connected. Syncing and stopping periodic fetch of data.');
|
|
32
|
-
// if polling, stop
|
|
33
|
-
if (producer.isRunning())
|
|
34
|
-
producer.stop();
|
|
35
|
-
syncAll();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function syncAll() {
|
|
39
|
-
// fetch splits and segments. There is no need to catch this promise (it is handled by `SplitChangesUpdater`)
|
|
40
|
-
producer.synchronizeSplits().then(() => {
|
|
41
|
-
producer.synchronizeSegment();
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return {
|
|
46
|
-
start() {
|
|
47
|
-
// start syncing
|
|
48
|
-
if (pushManager) {
|
|
49
|
-
syncAll();
|
|
50
|
-
pushManager.on(PUSH_SUBSYSTEM_UP, stopPollingAndSyncAll);
|
|
51
|
-
pushManager.on(PUSH_SUBSYSTEM_DOWN, startPolling);
|
|
52
|
-
setTimeout(pushManager.start); // Run in next event-loop cycle as in browser
|
|
53
|
-
} else {
|
|
54
|
-
producer.start();
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
stop() {
|
|
58
|
-
// stop syncing
|
|
59
|
-
if (pushManager)
|
|
60
|
-
pushManager.stop();
|
|
61
|
-
|
|
62
|
-
if (producer.isRunning())
|
|
63
|
-
producer.stop();
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
package/src/sync/package.json
DELETED
package/src/trackers/event.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import objectAssign from 'object-assign';
|
|
2
|
-
import logFactory from '../utils/logger';
|
|
3
|
-
import thenable from '../utils/promise/thenable';
|
|
4
|
-
const log = logFactory('splitio-client:event-tracker');
|
|
5
|
-
|
|
6
|
-
function EventTracker(context) {
|
|
7
|
-
const collector = context.get(context.constants.STORAGE).events;
|
|
8
|
-
const integrationsManager = context.get(context.constants.INTEGRATIONS_MANAGER, true);
|
|
9
|
-
|
|
10
|
-
function queueEventsCallback(eventData, tracked) {
|
|
11
|
-
const { eventTypeId, trafficTypeName, key, value, timestamp, properties } = eventData;
|
|
12
|
-
// Logging every prop would be too much.
|
|
13
|
-
const msg = `event of type "${eventTypeId}" for traffic type "${trafficTypeName}". Key: ${key}. Value: ${value}. Timestamp: ${timestamp}. ${properties ? 'With properties.' : 'With no properties.'}`;
|
|
14
|
-
|
|
15
|
-
if (tracked) {
|
|
16
|
-
log.info(`Successfully queued ${msg}`);
|
|
17
|
-
if (integrationsManager) {
|
|
18
|
-
// Wrap in a timeout because we don't want it to be blocking.
|
|
19
|
-
setTimeout(function () {
|
|
20
|
-
// copy of event, to avoid unexpected behaviour if modified by integrations
|
|
21
|
-
const eventDataCopy = objectAssign({}, eventData);
|
|
22
|
-
if (eventData.properties) eventDataCopy.properties = objectAssign({}, eventData.properties);
|
|
23
|
-
// integrationsManager does not throw errors (they are internally handled by each integration module)
|
|
24
|
-
integrationsManager.handleEvent(eventDataCopy);
|
|
25
|
-
}, 0);
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
log.warn(`Failed to queue ${msg}`);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return tracked;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
track: function (eventData, size) {
|
|
36
|
-
const tracked = collector.track(eventData, size);
|
|
37
|
-
|
|
38
|
-
if (thenable(tracked)) {
|
|
39
|
-
return tracked.then(queueEventsCallback.bind(null, eventData));
|
|
40
|
-
} else {
|
|
41
|
-
return queueEventsCallback(eventData, tracked);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export default EventTracker;
|
|
@@ -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 logFactory from '../utils/logger';
|
|
19
|
-
import thenable from '../utils/promise/thenable';
|
|
20
|
-
import ImpressionObserverFactory from '../impressions/observer';
|
|
21
|
-
import { truncateTimeFrame } from '../utils/time';
|
|
22
|
-
import { OPTIMIZED, PRODUCER_MODE, STANDALONE_MODE } from '../utils/constants';
|
|
23
|
-
const log = logFactory('splitio-client:impressions-tracker');
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Checks if impressions previous time should be added or not.
|
|
27
|
-
*/
|
|
28
|
-
function shouldAddPt(settings) {
|
|
29
|
-
return [PRODUCER_MODE, STANDALONE_MODE].indexOf(settings.mode) > -1 ? true : false;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Checks if it should dedupe impressions or not.
|
|
34
|
-
*/
|
|
35
|
-
function shouldBeOptimized(settings) {
|
|
36
|
-
if (!shouldAddPt(settings)) return false;
|
|
37
|
-
return settings.sync.impressionsMode === OPTIMIZED ? true : false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function ImpressionsTracker(context) {
|
|
41
|
-
const collector = context.get(context.constants.STORAGE).impressions;
|
|
42
|
-
const settings = context.get(context.constants.SETTINGS);
|
|
43
|
-
const listener = settings.impressionListener;
|
|
44
|
-
const integrationsManager = context.get(context.constants.INTEGRATIONS_MANAGER, true);
|
|
45
|
-
const { ip, hostname } = settings.runtime;
|
|
46
|
-
const sdkLanguageVersion = settings.version;
|
|
47
|
-
const queue = [];
|
|
48
|
-
const shouldAddPreviousTime = shouldAddPt(settings);
|
|
49
|
-
const isOptimized = shouldBeOptimized(settings);
|
|
50
|
-
const observer = ImpressionObserverFactory(); // Instantiates observer
|
|
51
|
-
const impressionsCounter = context.get(context.constants.IMPRESSIONS_COUNTER);
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
queue: function (impression, attributes) {
|
|
55
|
-
queue.push({
|
|
56
|
-
impression,
|
|
57
|
-
attributes
|
|
58
|
-
});
|
|
59
|
-
},
|
|
60
|
-
track: function () {
|
|
61
|
-
const impressionsCount = queue.length;
|
|
62
|
-
const slice = queue.splice(0, impressionsCount);
|
|
63
|
-
|
|
64
|
-
const impressionsToStore = []; // Track only the impressions that are going to be stored
|
|
65
|
-
// Wraps impressions to store and adds previousTime if it corresponds
|
|
66
|
-
slice.forEach(({ impression }) => {
|
|
67
|
-
if (shouldAddPreviousTime) {
|
|
68
|
-
// Adds previous time if it is enabled
|
|
69
|
-
impression.pt = observer.testAndSet(impression);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const now = Date.now();
|
|
73
|
-
if (isOptimized && impressionsCounter) {
|
|
74
|
-
// Increments impression counter per featureName
|
|
75
|
-
impressionsCounter.inc(impression.feature, now, 1);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Checks if the impression should be added in queue to be sent
|
|
79
|
-
if (!isOptimized || !impression.pt || impression.pt < truncateTimeFrame(now)) {
|
|
80
|
-
impressionsToStore.push(impression);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
const res = collector.track(impressionsToStore);
|
|
85
|
-
|
|
86
|
-
// If we're on an async storage, handle error and log it.
|
|
87
|
-
if (thenable(res)) {
|
|
88
|
-
res.then(() => {
|
|
89
|
-
log.debug(`Successfully stored ${impressionsCount} impression${impressionsCount === 1 ? '' : 's'}.`);
|
|
90
|
-
}).catch(err => {
|
|
91
|
-
log.error(`Could not store impressions bulk with ${impressionsCount} impression${impressionsCount === 1 ? '' : 's'}. Error: ${err}`);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (listener || integrationsManager) {
|
|
96
|
-
for (let i = 0; i < impressionsCount; i++) {
|
|
97
|
-
const impressionData = {
|
|
98
|
-
// copy of impression, to avoid unexpected behaviour if modified by integrations or impressionListener
|
|
99
|
-
impression: objectAssign({}, slice[i].impression),
|
|
100
|
-
attributes: slice[i].attributes,
|
|
101
|
-
ip,
|
|
102
|
-
hostname,
|
|
103
|
-
sdkLanguageVersion
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
// Wrap in a timeout because we don't want it to be blocking.
|
|
107
|
-
setTimeout(function () {
|
|
108
|
-
// integrationsManager.handleImpression does not throw errors
|
|
109
|
-
if (integrationsManager) integrationsManager.handleImpression(impressionData);
|
|
110
|
-
|
|
111
|
-
try { // An exception on the listeners should not break the SDK.
|
|
112
|
-
if (listener) listener.logImpression(impressionData);
|
|
113
|
-
} catch (err) {
|
|
114
|
-
log.error(`Impression listener logImpression method threw: ${err}.`);
|
|
115
|
-
}
|
|
116
|
-
}, 0);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export default ImpressionsTracker;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
class Backoff {
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Schedule function calls with exponential backoff
|
|
5
|
-
*
|
|
6
|
-
* @param {function} cb
|
|
7
|
-
* @param {number} baseMillis
|
|
8
|
-
* @param {number} maxMillis
|
|
9
|
-
*/
|
|
10
|
-
constructor(cb, baseMillis, maxMillis) {
|
|
11
|
-
this.baseMillis = baseMillis || Backoff.DEFAULT_BASE_MILLIS;
|
|
12
|
-
this.maxMillis = maxMillis || Backoff.DEFAULT_MAX_MILLIS;
|
|
13
|
-
this.attempts = 0;
|
|
14
|
-
this.cb = cb;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Schedule a next call to `cb`
|
|
19
|
-
* @returns scheduled delay in milliseconds
|
|
20
|
-
*/
|
|
21
|
-
scheduleCall() {
|
|
22
|
-
let delayInMillis = Math.min(this.baseMillis * Math.pow(2, this.attempts), this.maxMillis);
|
|
23
|
-
|
|
24
|
-
if (this.timeoutID) clearTimeout(this.timeoutID);
|
|
25
|
-
this.timeoutID = setTimeout(() => {
|
|
26
|
-
this.cb();
|
|
27
|
-
}, delayInMillis);
|
|
28
|
-
this.attempts++;
|
|
29
|
-
|
|
30
|
-
return delayInMillis;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
reset() {
|
|
34
|
-
this.attempts = 0;
|
|
35
|
-
if (this.timeoutID) {
|
|
36
|
-
clearTimeout(this.timeoutID);
|
|
37
|
-
this.timeoutID = 0;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
Backoff.DEFAULT_BASE_MILLIS = 1000; // 1 second
|
|
44
|
-
Backoff.DEFAULT_MAX_MILLIS = 1800000; // 30 minutes
|
|
45
|
-
|
|
46
|
-
export default Backoff;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decode a given string value in Base64 format
|
|
3
|
-
*
|
|
4
|
-
* @param {string} value to decode
|
|
5
|
-
* @throws {ReferenceError} if `atob` function is not defined
|
|
6
|
-
*/
|
|
7
|
-
export function decodeFromBase64(value) {
|
|
8
|
-
return atob(value);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Encode a given string value to Base64 format.
|
|
13
|
-
*
|
|
14
|
-
* @param {string} value to encode
|
|
15
|
-
* @throws {ReferenceError} if `btoa` function is not defined
|
|
16
|
-
*/
|
|
17
|
-
export function encodeToBase64(value) {
|
|
18
|
-
return btoa(value);
|
|
19
|
-
}
|
package/src/utils/base64/node.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decode a given string value in Base64 format
|
|
3
|
-
*
|
|
4
|
-
* @param {string} value to decode
|
|
5
|
-
*/
|
|
6
|
-
export function decodeFromBase64(value) {
|
|
7
|
-
// for node (version mayor than v4)
|
|
8
|
-
return Buffer.from(value, 'base64').toString('binary');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Encode a given string value to Base64 format
|
|
13
|
-
*
|
|
14
|
-
* @param {string} value to encode
|
|
15
|
-
*/
|
|
16
|
-
export function encodeToBase64(value) {
|
|
17
|
-
// for node (version mayor than v4)
|
|
18
|
-
return Buffer.from(value).toString('base64');
|
|
19
|
-
}
|
|
@@ -1,50 +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
|
-
function bs(items, value) {
|
|
17
|
-
let startIndex = 0;
|
|
18
|
-
let stopIndex = items.length - 1;
|
|
19
|
-
let middle = Math.floor((stopIndex + startIndex) / 2);
|
|
20
|
-
let minIndex = startIndex;
|
|
21
|
-
let maxIndex = stopIndex;
|
|
22
|
-
|
|
23
|
-
while (items[middle] !== value && startIndex < stopIndex) {
|
|
24
|
-
// adjust search area
|
|
25
|
-
if (value < items[middle]) {
|
|
26
|
-
stopIndex = middle - 1;
|
|
27
|
-
} else if (value > items[middle]) {
|
|
28
|
-
startIndex = middle + 1;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// recalculate middle
|
|
32
|
-
middle = Math.floor((stopIndex + startIndex) / 2);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// correct if middle is out of range
|
|
36
|
-
if (middle < minIndex) {
|
|
37
|
-
middle = minIndex;
|
|
38
|
-
} else if (middle > maxIndex) {
|
|
39
|
-
middle = maxIndex;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// we want to always return based on strict minor comparation
|
|
43
|
-
if (value < items[middle] && middle > minIndex) {
|
|
44
|
-
return middle - 1;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return middle;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export default bs;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// SDK Modes
|
|
2
|
-
export const LOCALHOST_MODE = 'localhost';
|
|
3
|
-
export const STANDALONE_MODE = 'standalone';
|
|
4
|
-
export const PRODUCER_MODE = 'producer';
|
|
5
|
-
export const CONSUMER_MODE = 'consumer';
|
|
6
|
-
// Storage types
|
|
7
|
-
export const STORAGE_MEMORY = 'MEMORY';
|
|
8
|
-
export const STORAGE_REDIS = 'REDIS';
|
|
9
|
-
export const STORAGE_LOCALSTORAGE = 'LOCALSTORAGE';
|
|
10
|
-
// Special treatments
|
|
11
|
-
export const CONTROL = 'control';
|
|
12
|
-
export const CONTROL_WITH_CONFIG = {
|
|
13
|
-
treatment: CONTROL,
|
|
14
|
-
config: null
|
|
15
|
-
};
|
|
16
|
-
// Constants for unknown and not-applicable values
|
|
17
|
-
export const UNKNOWN = 'unknown';
|
|
18
|
-
export const NA = 'NA';
|
|
19
|
-
// Integration types
|
|
20
|
-
export const GOOGLE_ANALYTICS_TO_SPLIT = 'GOOGLE_ANALYTICS_TO_SPLIT';
|
|
21
|
-
export const SPLIT_TO_GOOGLE_ANALYTICS = 'SPLIT_TO_GOOGLE_ANALYTICS';
|
|
22
|
-
// Integration data types
|
|
23
|
-
export const SPLIT_IMPRESSION = 'IMPRESSION';
|
|
24
|
-
export const SPLIT_EVENT = 'EVENT';
|
|
25
|
-
// Split filters metadata.
|
|
26
|
-
// Ordered according to their precedency when forming the filter query string: `&names=<values>&prefixes=<values>`
|
|
27
|
-
export const FILTERS_METADATA = [
|
|
28
|
-
{
|
|
29
|
-
type: 'byName',
|
|
30
|
-
maxLength: 400,
|
|
31
|
-
queryParam: 'names='
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'byPrefix',
|
|
35
|
-
maxLength: 50,
|
|
36
|
-
queryParam: 'prefixes='
|
|
37
|
-
}
|
|
38
|
-
];
|
|
39
|
-
// Impression collection modes
|
|
40
|
-
export const DEBUG = 'DEBUG';
|
|
41
|
-
export const OPTIMIZED = 'OPTIMIZED';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export const COLLECTORS = 'metrics_collectors';
|
|
2
|
-
export const DESTROYED = 'is_destroyed';
|
|
3
|
-
export const EVENTS = 'events_publisher';
|
|
4
|
-
export const HAS_TIMEDOUT = 'has_timedout';
|
|
5
|
-
export const INTEGRATIONS_MANAGER = 'integrations_manager';
|
|
6
|
-
export const MY_SEGMENTS_CHANGE_WORKER = 'my_segments_change_worker';
|
|
7
|
-
export const PRODUCER = 'producer';
|
|
8
|
-
export const READINESS = 'readiness_gate';
|
|
9
|
-
export const READY = 'is_ready';
|
|
10
|
-
export const READY_FROM_CACHE = 'is_ready_from_cache';
|
|
11
|
-
export const SETTINGS = 'settings';
|
|
12
|
-
export const STATUS_MANAGER = 'status_manager';
|
|
13
|
-
export const STORAGE = 'storage';
|
|
14
|
-
export const IMPRESSIONS_COUNTER = 'impressions_counter';
|
|
15
|
-
|
|
16
|
-
export default {
|
|
17
|
-
COLLECTORS, DESTROYED, EVENTS, HAS_TIMEDOUT, INTEGRATIONS_MANAGER, MY_SEGMENTS_CHANGE_WORKER, PRODUCER, READINESS, READY, READY_FROM_CACHE, SETTINGS, STATUS_MANAGER, STORAGE, IMPRESSIONS_COUNTER
|
|
18
|
-
};
|
|
@@ -1,84 +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 objectAssign from 'object-assign';
|
|
17
|
-
import thenable from '../promise/thenable';
|
|
18
|
-
import constants from './constants';
|
|
19
|
-
|
|
20
|
-
class Context {
|
|
21
|
-
constructor() {
|
|
22
|
-
this._map = {};
|
|
23
|
-
this.constants = constants;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Gets an item in the context instance or a promise if the item is not yet stored and we are not doing a one time check.
|
|
27
|
-
* @param {String} name - The name of the item we want to get
|
|
28
|
-
* @return {Any} The item we want to get.
|
|
29
|
-
*/
|
|
30
|
-
get(name, flagCheck = false) {
|
|
31
|
-
if (typeof name !== 'string' || typeof name === 'string' && !name.length) return; // Wrong usage, don't generate item promise.
|
|
32
|
-
|
|
33
|
-
const item = this._map[name];
|
|
34
|
-
|
|
35
|
-
// If we have the item, return it.
|
|
36
|
-
if (item !== undefined) {
|
|
37
|
-
return item;
|
|
38
|
-
} else if (!flagCheck) { // If we don't and it's not a flag check, return a promise that we will resolve once we receive the item.
|
|
39
|
-
let resolve;
|
|
40
|
-
const promise = new Promise(res => resolve = res);
|
|
41
|
-
promise.manualResolve = resolve;
|
|
42
|
-
this._map[name] = promise;
|
|
43
|
-
return promise;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Gets all objects stored in the context.
|
|
48
|
-
* @return {Object} - A new map of context-stored items.
|
|
49
|
-
*/
|
|
50
|
-
getAll() { return objectAssign({}, this._map); }
|
|
51
|
-
/**
|
|
52
|
-
* Stores an item in the context instance.
|
|
53
|
-
* @param {String} name - The name of what we are storing
|
|
54
|
-
* @param {Any} item - The item can be of any type.
|
|
55
|
-
* @return {Boolean} - The result of the operation
|
|
56
|
-
*/
|
|
57
|
-
put(name, item) {
|
|
58
|
-
if (typeof name !== 'string' || (typeof name === 'string' && !name.length) || item === undefined) return false; // We can't store this.
|
|
59
|
-
|
|
60
|
-
const existingItem = this._map[name];
|
|
61
|
-
|
|
62
|
-
// Item already exists and no one is waiting for the item. Abort and return false.
|
|
63
|
-
if (existingItem !== undefined && typeof existingItem.manualResolve !== 'function') return false;
|
|
64
|
-
|
|
65
|
-
// Someone is waiting for this item, resolve to it.
|
|
66
|
-
if (thenable(existingItem) && existingItem.manualResolve) existingItem.manualResolve(item);
|
|
67
|
-
|
|
68
|
-
// We are storing a promise, when resolving save the item. On error, clean up the item.
|
|
69
|
-
if (thenable(item)) {
|
|
70
|
-
item.then(item => {
|
|
71
|
-
this._map[name] = item;
|
|
72
|
-
return item;
|
|
73
|
-
}).catch(err => {
|
|
74
|
-
this._map[name] = undefined;
|
|
75
|
-
return err;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
this._map[name] = item;
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export default Context;
|