splitclient-rb 6.3.0 → 8.11.0

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.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/pull_request_template.md +9 -0
  4. data/.github/workflows/ci.yml +90 -0
  5. data/.github/workflows/update-license-year.yml +45 -0
  6. data/.gitignore +4 -0
  7. data/.rubocop.yml +46 -3
  8. data/CHANGES.txt +158 -11
  9. data/CONTRIBUTORS-GUIDE.md +49 -0
  10. data/LICENSE +169 -13
  11. data/NOTICE.txt +5 -0
  12. data/README.md +67 -27
  13. data/Rakefile +1 -8
  14. data/ext/murmurhash/3_x64_128.c +117 -0
  15. data/ext/murmurhash/murmurhash.c +5 -1
  16. data/lib/murmurhash/murmurhash.jar +0 -0
  17. data/lib/splitclient-rb/cache/adapters/cache_adapter.rb +3 -3
  18. data/lib/splitclient-rb/cache/adapters/memory_adapters/map_adapter.rb +4 -0
  19. data/lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb +7 -0
  20. data/lib/splitclient-rb/cache/adapters/redis_adapter.rb +12 -4
  21. data/lib/splitclient-rb/cache/fetchers/segment_fetcher.rb +83 -0
  22. data/lib/splitclient-rb/cache/fetchers/split_fetcher.rb +70 -0
  23. data/lib/splitclient-rb/cache/filter/bloom_filter.rb +67 -0
  24. data/lib/splitclient-rb/cache/filter/filter_adapter.rb +32 -0
  25. data/lib/splitclient-rb/cache/filter/flag_set_filter.rb +40 -0
  26. data/lib/splitclient-rb/cache/hashers/impression_hasher.rb +34 -0
  27. data/lib/splitclient-rb/cache/observers/impression_observer.rb +22 -0
  28. data/lib/splitclient-rb/cache/observers/noop_impression_observer.rb +10 -0
  29. data/lib/splitclient-rb/cache/repositories/events/memory_repository.rb +26 -14
  30. data/lib/splitclient-rb/cache/repositories/events/redis_repository.rb +9 -14
  31. data/lib/splitclient-rb/cache/repositories/events_repository.rb +31 -10
  32. data/lib/splitclient-rb/cache/repositories/flag_sets/memory_repository.rb +40 -0
  33. data/lib/splitclient-rb/cache/repositories/flag_sets/redis_repository.rb +49 -0
  34. data/lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb +22 -23
  35. data/lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb +15 -22
  36. data/lib/splitclient-rb/cache/repositories/impressions_repository.rb +6 -31
  37. data/lib/splitclient-rb/cache/repositories/repository.rb +6 -5
  38. data/lib/splitclient-rb/cache/repositories/rule_based_segments_repository.rb +136 -0
  39. data/lib/splitclient-rb/cache/repositories/segments_repository.rb +46 -6
  40. data/lib/splitclient-rb/cache/repositories/splits_repository.rb +232 -43
  41. data/lib/splitclient-rb/cache/routers/impression_router.rb +24 -22
  42. data/lib/splitclient-rb/cache/senders/events_sender.rb +12 -29
  43. data/lib/splitclient-rb/cache/senders/impressions_adapter/memory_sender.rb +71 -0
  44. data/lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb +69 -0
  45. data/lib/splitclient-rb/cache/senders/impressions_count_sender.rb +43 -0
  46. data/lib/splitclient-rb/cache/senders/impressions_formatter.rb +27 -13
  47. data/lib/splitclient-rb/cache/senders/impressions_sender.rb +11 -25
  48. data/lib/splitclient-rb/cache/senders/impressions_sender_adapter.rb +21 -0
  49. data/lib/splitclient-rb/cache/senders/localhost_repo_cleaner.rb +47 -0
  50. data/lib/splitclient-rb/cache/stores/localhost_split_builder.rb +95 -0
  51. data/lib/splitclient-rb/cache/stores/localhost_split_store.rb +110 -0
  52. data/lib/splitclient-rb/cache/stores/store_utils.rb +13 -0
  53. data/lib/splitclient-rb/clients/split_client.rb +385 -138
  54. data/lib/splitclient-rb/constants.rb +16 -0
  55. data/lib/splitclient-rb/engine/api/client.rb +38 -43
  56. data/lib/splitclient-rb/engine/api/events.rb +19 -11
  57. data/lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb +1 -0
  58. data/lib/splitclient-rb/engine/api/impressions.rb +49 -14
  59. data/lib/splitclient-rb/engine/api/segments.rb +31 -24
  60. data/lib/splitclient-rb/engine/api/splits.rb +108 -33
  61. data/lib/splitclient-rb/engine/api/telemetry_api.rb +47 -0
  62. data/lib/splitclient-rb/engine/auth_api_client.rb +96 -0
  63. data/lib/splitclient-rb/engine/back_off.rb +26 -0
  64. data/lib/splitclient-rb/engine/common/impressions_counter.rb +45 -0
  65. data/lib/splitclient-rb/engine/common/impressions_manager.rb +165 -0
  66. data/lib/splitclient-rb/engine/common/noop_impressions_counter.rb +27 -0
  67. data/lib/splitclient-rb/engine/events/events_delivery.rb +20 -0
  68. data/lib/splitclient-rb/engine/events/events_manager.rb +194 -0
  69. data/lib/splitclient-rb/engine/events/events_manager_config.rb +96 -0
  70. data/lib/splitclient-rb/engine/events/events_task.rb +50 -0
  71. data/lib/splitclient-rb/engine/events/noop_events_queue.rb +13 -0
  72. data/lib/splitclient-rb/engine/fallback_treatment_calculator.rb +48 -0
  73. data/lib/splitclient-rb/engine/impressions/noop_unique_keys_tracker.rb +17 -0
  74. data/lib/splitclient-rb/engine/impressions/unique_keys_tracker.rb +144 -0
  75. data/lib/splitclient-rb/engine/matchers/all_keys_matcher.rb +1 -1
  76. data/lib/splitclient-rb/engine/matchers/between_matcher.rb +7 -5
  77. data/lib/splitclient-rb/engine/matchers/between_semver_matcher.rb +33 -0
  78. data/lib/splitclient-rb/engine/matchers/combining_matcher.rb +10 -8
  79. data/lib/splitclient-rb/engine/matchers/contains_all_matcher.rb +2 -6
  80. data/lib/splitclient-rb/engine/matchers/contains_any_matcher.rb +1 -5
  81. data/lib/splitclient-rb/engine/matchers/contains_matcher.rb +7 -5
  82. data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +6 -5
  83. data/lib/splitclient-rb/engine/matchers/ends_with_matcher.rb +5 -4
  84. data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +3 -2
  85. data/lib/splitclient-rb/engine/matchers/equal_to_matcher.rb +6 -4
  86. data/lib/splitclient-rb/engine/matchers/equal_to_semver_matcher.rb +28 -0
  87. data/lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb +1 -5
  88. data/lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb +6 -4
  89. data/lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_semver_matcher.rb +28 -0
  90. data/lib/splitclient-rb/engine/matchers/in_list_semver_matcher.rb +36 -0
  91. data/lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb +6 -4
  92. data/lib/splitclient-rb/engine/matchers/less_than_or_equal_to_semver_matcher.rb +28 -0
  93. data/lib/splitclient-rb/engine/matchers/matcher.rb +22 -0
  94. data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +3 -2
  95. data/lib/splitclient-rb/engine/matchers/negation_matcher.rb +3 -2
  96. data/lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb +2 -6
  97. data/lib/splitclient-rb/engine/matchers/prerequisites_matcher.rb +31 -0
  98. data/lib/splitclient-rb/engine/matchers/rule_based_segment_matcher.rb +78 -0
  99. data/lib/splitclient-rb/engine/matchers/semver.rb +201 -0
  100. data/lib/splitclient-rb/engine/matchers/set_matcher.rb +2 -1
  101. data/lib/splitclient-rb/engine/matchers/starts_with_matcher.rb +4 -3
  102. data/lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb +3 -2
  103. data/lib/splitclient-rb/engine/matchers/whitelist_matcher.rb +7 -5
  104. data/lib/splitclient-rb/engine/metrics/binary_search_latency_tracker.rb +3 -65
  105. data/lib/splitclient-rb/engine/models/evaluation_options.rb +9 -0
  106. data/lib/splitclient-rb/engine/models/event_active_subscriptions.rb +14 -0
  107. data/lib/splitclient-rb/engine/models/events_metadata.rb +10 -0
  108. data/lib/splitclient-rb/engine/models/fallback_treatment.rb +11 -0
  109. data/lib/splitclient-rb/engine/models/fallback_treatments_configuration.rb +36 -0
  110. data/lib/splitclient-rb/engine/models/label.rb +3 -0
  111. data/lib/splitclient-rb/engine/models/sdk_event.rb +4 -0
  112. data/lib/splitclient-rb/engine/models/sdk_event_type.rb +4 -0
  113. data/lib/splitclient-rb/engine/models/sdk_internal_event.rb +8 -0
  114. data/lib/splitclient-rb/engine/models/sdk_internal_event_notification.rb +14 -0
  115. data/lib/splitclient-rb/engine/models/segment_type.rb +4 -0
  116. data/lib/splitclient-rb/engine/models/split_http_response.rb +19 -0
  117. data/lib/splitclient-rb/engine/models/valid_sdk_event.rb +14 -0
  118. data/lib/splitclient-rb/engine/parser/condition.rb +81 -20
  119. data/lib/splitclient-rb/engine/parser/evaluator.rb +40 -51
  120. data/lib/splitclient-rb/engine/push_manager.rb +66 -0
  121. data/lib/splitclient-rb/engine/status_manager.rb +39 -0
  122. data/lib/splitclient-rb/engine/sync_manager.rb +180 -0
  123. data/lib/splitclient-rb/engine/synchronizer.rb +231 -0
  124. data/lib/splitclient-rb/exceptions.rb +20 -1
  125. data/lib/splitclient-rb/helpers/decryption_helper.rb +25 -0
  126. data/lib/splitclient-rb/helpers/evaluator_helper.rb +37 -0
  127. data/lib/splitclient-rb/helpers/repository_helper.rb +61 -0
  128. data/lib/splitclient-rb/helpers/thread_helper.rb +24 -0
  129. data/lib/splitclient-rb/helpers/util.rb +26 -0
  130. data/lib/splitclient-rb/managers/split_manager.rb +58 -20
  131. data/lib/splitclient-rb/spec.rb +9 -0
  132. data/lib/splitclient-rb/split_config.rb +336 -54
  133. data/lib/splitclient-rb/split_factory.rb +219 -33
  134. data/lib/splitclient-rb/split_factory_builder.rb +1 -22
  135. data/lib/splitclient-rb/split_factory_registry.rb +63 -0
  136. data/lib/splitclient-rb/split_logger.rb +9 -10
  137. data/lib/splitclient-rb/sse/event_source/client.rb +263 -0
  138. data/lib/splitclient-rb/sse/event_source/event_parser.rb +65 -0
  139. data/lib/splitclient-rb/sse/event_source/event_types.rb +15 -0
  140. data/lib/splitclient-rb/sse/event_source/stream_data.rb +22 -0
  141. data/lib/splitclient-rb/sse/notification_manager_keeper.rb +84 -0
  142. data/lib/splitclient-rb/sse/notification_processor.rb +48 -0
  143. data/lib/splitclient-rb/sse/sse_handler.rb +44 -0
  144. data/lib/splitclient-rb/sse/workers/segments_worker.rb +62 -0
  145. data/lib/splitclient-rb/sse/workers/splits_worker.rb +149 -0
  146. data/lib/splitclient-rb/telemetry/domain/constants.rb +48 -0
  147. data/lib/splitclient-rb/telemetry/domain/structs.rb +35 -0
  148. data/lib/splitclient-rb/telemetry/evaluation_consumer.rb +14 -0
  149. data/lib/splitclient-rb/telemetry/evaluation_producer.rb +21 -0
  150. data/lib/splitclient-rb/telemetry/init_consumer.rb +14 -0
  151. data/lib/splitclient-rb/telemetry/init_producer.rb +19 -0
  152. data/lib/splitclient-rb/telemetry/memory/memory_evaluation_consumer.rb +32 -0
  153. data/lib/splitclient-rb/telemetry/memory/memory_evaluation_producer.rb +24 -0
  154. data/lib/splitclient-rb/telemetry/memory/memory_init_consumer.rb +28 -0
  155. data/lib/splitclient-rb/telemetry/memory/memory_init_producer.rb +34 -0
  156. data/lib/splitclient-rb/telemetry/memory/memory_runtime_consumer.rb +119 -0
  157. data/lib/splitclient-rb/telemetry/memory/memory_runtime_producer.rb +87 -0
  158. data/lib/splitclient-rb/telemetry/memory/memory_synchronizer.rb +213 -0
  159. data/lib/splitclient-rb/telemetry/redis/redis_evaluation_producer.rb +38 -0
  160. data/lib/splitclient-rb/telemetry/redis/redis_init_producer.rb +37 -0
  161. data/lib/splitclient-rb/telemetry/redis/redis_synchronizer.rb +27 -0
  162. data/lib/splitclient-rb/telemetry/runtime_consumer.rb +25 -0
  163. data/lib/splitclient-rb/telemetry/runtime_producer.rb +25 -0
  164. data/lib/splitclient-rb/telemetry/storages/memory.rb +159 -0
  165. data/lib/splitclient-rb/telemetry/sync_task.rb +36 -0
  166. data/lib/splitclient-rb/telemetry/synchronizer.rb +33 -0
  167. data/lib/splitclient-rb/utilitites.rb +8 -0
  168. data/lib/splitclient-rb/validators.rb +142 -38
  169. data/lib/splitclient-rb/version.rb +1 -1
  170. data/lib/splitclient-rb.rb +101 -16
  171. data/sonar-project.properties +6 -0
  172. data/splitclient-rb.gemspec +28 -23
  173. metadata +262 -82
  174. data/.travis.yml +0 -11
  175. data/Appraisals +0 -10
  176. data/Detailed-README.md +0 -588
  177. data/NEWS +0 -141
  178. data/lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb +0 -127
  179. data/lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb +0 -96
  180. data/lib/splitclient-rb/cache/repositories/metrics_repository.rb +0 -21
  181. data/lib/splitclient-rb/cache/senders/metrics_sender.rb +0 -56
  182. data/lib/splitclient-rb/cache/stores/sdk_blocker.rb +0 -46
  183. data/lib/splitclient-rb/cache/stores/segment_store.rb +0 -81
  184. data/lib/splitclient-rb/cache/stores/split_store.rb +0 -102
  185. data/lib/splitclient-rb/clients/localhost_split_client.rb +0 -183
  186. data/lib/splitclient-rb/engine/api/faraday_adapter/patched_net_http_persistent.rb +0 -46
  187. data/lib/splitclient-rb/engine/api/metrics.rb +0 -60
  188. data/lib/splitclient-rb/engine/metrics/metrics.rb +0 -80
  189. data/lib/splitclient-rb/engine/parser/split_adapter.rb +0 -81
  190. data/lib/splitclient-rb/localhost_split_factory.rb +0 -13
  191. data/lib/splitclient-rb/localhost_utils.rb +0 -59
  192. data/lib/splitclient-rb/managers/localhost_split_manager.rb +0 -60
metadata CHANGED
@@ -1,183 +1,224 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.3.0
4
+ version: 8.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Split Software
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2019-04-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: allocation_stats
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - ">="
16
+ - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '0'
18
+ version: '0.1'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - ">="
23
+ - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '0'
25
+ version: '0.1'
27
26
  - !ruby/object:Gem::Dependency
28
- name: appraisal
27
+ name: bundler
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - ">="
30
+ - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '0'
32
+ version: '2.2'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - ">="
37
+ - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '0'
39
+ version: '2.2'
41
40
  - !ruby/object:Gem::Dependency
42
- name: bundler
41
+ name: byebug
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '1.11'
46
+ version: '11.1'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '1.11'
53
+ version: '11.1'
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: pry
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - ">="
58
+ - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '0'
60
+ version: '0.14'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
- - - ">="
65
+ - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '0'
67
+ version: '0.14'
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: pry-nav
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
- - - ">="
72
+ - - "~>"
74
73
  - !ruby/object:Gem::Version
75
- version: '0'
74
+ version: '1.0'
76
75
  type: :development
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
- - - ">="
79
+ - - "~>"
81
80
  - !ruby/object:Gem::Version
82
- version: '0'
81
+ version: '1.0'
83
82
  - !ruby/object:Gem::Dependency
84
83
  name: rake
85
84
  requirement: !ruby/object:Gem::Requirement
86
85
  requirements:
87
86
  - - "~>"
88
87
  - !ruby/object:Gem::Version
89
- version: '10.0'
88
+ version: '13.0'
90
89
  type: :development
91
90
  prerelease: false
92
91
  version_requirements: !ruby/object:Gem::Requirement
93
92
  requirements:
94
93
  - - "~>"
95
94
  - !ruby/object:Gem::Version
96
- version: '10.0'
95
+ version: '13.0'
97
96
  - !ruby/object:Gem::Dependency
98
97
  name: rake-compiler
99
98
  requirement: !ruby/object:Gem::Requirement
100
99
  requirements:
101
- - - ">="
100
+ - - "~>"
102
101
  - !ruby/object:Gem::Version
103
- version: '0'
102
+ version: '1.1'
104
103
  type: :development
105
104
  prerelease: false
106
105
  version_requirements: !ruby/object:Gem::Requirement
107
106
  requirements:
108
- - - ">="
107
+ - - "~>"
109
108
  - !ruby/object:Gem::Version
110
- version: '0'
109
+ version: '1.1'
111
110
  - !ruby/object:Gem::Dependency
112
111
  name: rspec
113
112
  requirement: !ruby/object:Gem::Requirement
114
113
  requirements:
115
- - - ">="
114
+ - - "~>"
116
115
  - !ruby/object:Gem::Version
117
- version: '0'
116
+ version: '3.10'
118
117
  type: :development
119
118
  prerelease: false
120
119
  version_requirements: !ruby/object:Gem::Requirement
121
120
  requirements:
122
- - - ">="
121
+ - - "~>"
123
122
  - !ruby/object:Gem::Version
124
- version: '0'
123
+ version: '3.10'
125
124
  - !ruby/object:Gem::Dependency
126
125
  name: rubocop
127
126
  requirement: !ruby/object:Gem::Requirement
128
127
  requirements:
129
128
  - - '='
130
129
  - !ruby/object:Gem::Version
131
- version: 0.59.0
130
+ version: 1.28.2
132
131
  type: :development
133
132
  prerelease: false
134
133
  version_requirements: !ruby/object:Gem::Requirement
135
134
  requirements:
136
135
  - - '='
137
136
  - !ruby/object:Gem::Version
138
- version: 0.59.0
137
+ version: 1.28.2
139
138
  - !ruby/object:Gem::Dependency
140
139
  name: simplecov
141
140
  requirement: !ruby/object:Gem::Requirement
142
141
  requirements:
143
- - - ">="
142
+ - - "~>"
144
143
  - !ruby/object:Gem::Version
145
- version: '0'
144
+ version: '0.20'
146
145
  type: :development
147
146
  prerelease: false
148
147
  version_requirements: !ruby/object:Gem::Requirement
149
148
  requirements:
150
- - - ">="
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.20'
152
+ - !ruby/object:Gem::Dependency
153
+ name: simplecov-json
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0.2'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
151
164
  - !ruby/object:Gem::Version
152
- version: '0'
165
+ version: '0.2'
153
166
  - !ruby/object:Gem::Dependency
154
167
  name: timecop
155
168
  requirement: !ruby/object:Gem::Requirement
156
169
  requirements:
157
- - - ">="
170
+ - - "~>"
158
171
  - !ruby/object:Gem::Version
159
- version: '0'
172
+ version: '0.9'
160
173
  type: :development
161
174
  prerelease: false
162
175
  version_requirements: !ruby/object:Gem::Requirement
163
176
  requirements:
164
- - - ">="
177
+ - - "~>"
165
178
  - !ruby/object:Gem::Version
166
- version: '0'
179
+ version: '0.9'
167
180
  - !ruby/object:Gem::Dependency
168
181
  name: webmock
169
182
  requirement: !ruby/object:Gem::Requirement
170
183
  requirements:
171
- - - ">="
184
+ - - "~>"
172
185
  - !ruby/object:Gem::Version
173
- version: '0'
186
+ version: '3.24'
174
187
  type: :development
175
188
  prerelease: false
176
189
  version_requirements: !ruby/object:Gem::Requirement
177
190
  requirements:
178
- - - ">="
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '3.24'
194
+ - !ruby/object:Gem::Dependency
195
+ name: webrick
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 1.8.2
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
179
206
  - !ruby/object:Gem::Version
180
- version: '0'
207
+ version: 1.8.2
208
+ - !ruby/object:Gem::Dependency
209
+ name: bitarray
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.3'
215
+ type: :runtime
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '1.3'
181
222
  - !ruby/object:Gem::Dependency
182
223
  name: concurrent-ruby
183
224
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +239,40 @@ dependencies:
198
239
  requirements:
199
240
  - - ">="
200
241
  - !ruby/object:Gem::Version
201
- version: '0.8'
242
+ version: '1.1'
243
+ - - "<"
244
+ - !ruby/object:Gem::Version
245
+ version: '3.0'
202
246
  type: :runtime
203
247
  prerelease: false
204
248
  version_requirements: !ruby/object:Gem::Requirement
205
249
  requirements:
206
250
  - - ">="
207
251
  - !ruby/object:Gem::Version
208
- version: '0.8'
252
+ version: '1.1'
253
+ - - "<"
254
+ - !ruby/object:Gem::Version
255
+ version: '3.0'
256
+ - !ruby/object:Gem::Dependency
257
+ name: faraday-net_http_persistent
258
+ requirement: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '1.0'
263
+ - - "<"
264
+ - !ruby/object:Gem::Version
265
+ version: '3.0'
266
+ type: :runtime
267
+ prerelease: false
268
+ version_requirements: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: '1.0'
273
+ - - "<"
274
+ - !ruby/object:Gem::Version
275
+ version: '3.0'
209
276
  - !ruby/object:Gem::Dependency
210
277
  name: json
211
278
  requirement: !ruby/object:Gem::Requirement
@@ -213,6 +280,9 @@ dependencies:
213
280
  - - ">="
214
281
  - !ruby/object:Gem::Version
215
282
  version: '1.8'
283
+ - - "<"
284
+ - !ruby/object:Gem::Version
285
+ version: '3.0'
216
286
  type: :runtime
217
287
  prerelease: false
218
288
  version_requirements: !ruby/object:Gem::Requirement
@@ -220,20 +290,37 @@ dependencies:
220
290
  - - ">="
221
291
  - !ruby/object:Gem::Version
222
292
  version: '1.8'
293
+ - - "<"
294
+ - !ruby/object:Gem::Version
295
+ version: '3.0'
223
296
  - !ruby/object:Gem::Dependency
224
- name: lru_redux
297
+ name: jwt
225
298
  requirement: !ruby/object:Gem::Requirement
226
299
  requirements:
227
300
  - - ">="
228
301
  - !ruby/object:Gem::Version
229
- version: '0'
302
+ version: '3.1'
230
303
  type: :runtime
231
304
  prerelease: false
232
305
  version_requirements: !ruby/object:Gem::Requirement
233
306
  requirements:
234
307
  - - ">="
235
308
  - !ruby/object:Gem::Version
236
- version: '0'
309
+ version: '3.1'
310
+ - !ruby/object:Gem::Dependency
311
+ name: lru_redux
312
+ requirement: !ruby/object:Gem::Requirement
313
+ requirements:
314
+ - - "~>"
315
+ - !ruby/object:Gem::Version
316
+ version: '1.1'
317
+ type: :runtime
318
+ prerelease: false
319
+ version_requirements: !ruby/object:Gem::Requirement
320
+ requirements:
321
+ - - "~>"
322
+ - !ruby/object:Gem::Version
323
+ version: '1.1'
237
324
  - !ruby/object:Gem::Dependency
238
325
  name: net-http-persistent
239
326
  requirement: !ruby/object:Gem::Requirement
@@ -241,6 +328,9 @@ dependencies:
241
328
  - - ">="
242
329
  - !ruby/object:Gem::Version
243
330
  version: '2.9'
331
+ - - "<"
332
+ - !ruby/object:Gem::Version
333
+ version: '5.0'
244
334
  type: :runtime
245
335
  prerelease: false
246
336
  version_requirements: !ruby/object:Gem::Requirement
@@ -248,54 +338,66 @@ dependencies:
248
338
  - - ">="
249
339
  - !ruby/object:Gem::Version
250
340
  version: '2.9'
341
+ - - "<"
342
+ - !ruby/object:Gem::Version
343
+ version: '5.0'
251
344
  - !ruby/object:Gem::Dependency
252
345
  name: redis
253
346
  requirement: !ruby/object:Gem::Requirement
254
347
  requirements:
255
348
  - - ">="
256
349
  - !ruby/object:Gem::Version
257
- version: '3.2'
350
+ version: 4.0.0
351
+ - - "<"
352
+ - !ruby/object:Gem::Version
353
+ version: '6.0'
258
354
  type: :runtime
259
355
  prerelease: false
260
356
  version_requirements: !ruby/object:Gem::Requirement
261
357
  requirements:
262
358
  - - ">="
263
359
  - !ruby/object:Gem::Version
264
- version: '3.2'
360
+ version: 4.0.0
361
+ - - "<"
362
+ - !ruby/object:Gem::Version
363
+ version: '6.0'
265
364
  - !ruby/object:Gem::Dependency
266
365
  name: thread_safe
267
366
  requirement: !ruby/object:Gem::Requirement
268
367
  requirements:
269
- - - ">="
368
+ - - "~>"
270
369
  - !ruby/object:Gem::Version
271
370
  version: '0.3'
272
371
  type: :runtime
273
372
  prerelease: false
274
373
  version_requirements: !ruby/object:Gem::Requirement
275
374
  requirements:
276
- - - ">="
375
+ - - "~>"
277
376
  - !ruby/object:Gem::Version
278
377
  version: '0.3'
279
378
  description: Ruby client for using split SDK.
280
379
  email:
281
- - pato@split.io
380
+ - mauro.sanz@split.io
282
381
  executables: []
283
382
  extensions:
284
383
  - ext/murmurhash/extconf.rb
285
384
  extra_rdoc_files: []
286
385
  files:
386
+ - ".github/CODEOWNERS"
387
+ - ".github/pull_request_template.md"
388
+ - ".github/workflows/ci.yml"
389
+ - ".github/workflows/update-license-year.yml"
287
390
  - ".gitignore"
288
391
  - ".rubocop.yml"
289
392
  - ".simplecov"
290
- - ".travis.yml"
291
- - Appraisals
292
393
  - CHANGES.txt
293
- - Detailed-README.md
394
+ - CONTRIBUTORS-GUIDE.md
294
395
  - Gemfile
295
396
  - LICENSE
296
- - NEWS
397
+ - NOTICE.txt
297
398
  - README.md
298
399
  - Rakefile
400
+ - ext/murmurhash/3_x64_128.c
299
401
  - ext/murmurhash/3_x86_32.c
300
402
  - ext/murmurhash/extconf.rb
301
403
  - ext/murmurhash/murmurhash.c
@@ -311,39 +413,64 @@ files:
311
413
  - lib/splitclient-rb/cache/adapters/memory_adapters/map_adapter.rb
312
414
  - lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
313
415
  - lib/splitclient-rb/cache/adapters/redis_adapter.rb
416
+ - lib/splitclient-rb/cache/fetchers/segment_fetcher.rb
417
+ - lib/splitclient-rb/cache/fetchers/split_fetcher.rb
418
+ - lib/splitclient-rb/cache/filter/bloom_filter.rb
419
+ - lib/splitclient-rb/cache/filter/filter_adapter.rb
420
+ - lib/splitclient-rb/cache/filter/flag_set_filter.rb
421
+ - lib/splitclient-rb/cache/hashers/impression_hasher.rb
422
+ - lib/splitclient-rb/cache/observers/impression_observer.rb
423
+ - lib/splitclient-rb/cache/observers/noop_impression_observer.rb
314
424
  - lib/splitclient-rb/cache/repositories/events/memory_repository.rb
315
425
  - lib/splitclient-rb/cache/repositories/events/redis_repository.rb
316
426
  - lib/splitclient-rb/cache/repositories/events_repository.rb
427
+ - lib/splitclient-rb/cache/repositories/flag_sets/memory_repository.rb
428
+ - lib/splitclient-rb/cache/repositories/flag_sets/redis_repository.rb
317
429
  - lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb
318
430
  - lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb
319
431
  - lib/splitclient-rb/cache/repositories/impressions_repository.rb
320
- - lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb
321
- - lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb
322
- - lib/splitclient-rb/cache/repositories/metrics_repository.rb
323
432
  - lib/splitclient-rb/cache/repositories/repository.rb
433
+ - lib/splitclient-rb/cache/repositories/rule_based_segments_repository.rb
324
434
  - lib/splitclient-rb/cache/repositories/segments_repository.rb
325
435
  - lib/splitclient-rb/cache/repositories/splits_repository.rb
326
436
  - lib/splitclient-rb/cache/routers/impression_router.rb
327
437
  - lib/splitclient-rb/cache/senders/events_sender.rb
438
+ - lib/splitclient-rb/cache/senders/impressions_adapter/memory_sender.rb
439
+ - lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb
440
+ - lib/splitclient-rb/cache/senders/impressions_count_sender.rb
328
441
  - lib/splitclient-rb/cache/senders/impressions_formatter.rb
329
442
  - lib/splitclient-rb/cache/senders/impressions_sender.rb
330
- - lib/splitclient-rb/cache/senders/metrics_sender.rb
331
- - lib/splitclient-rb/cache/stores/sdk_blocker.rb
332
- - lib/splitclient-rb/cache/stores/segment_store.rb
333
- - lib/splitclient-rb/cache/stores/split_store.rb
334
- - lib/splitclient-rb/clients/localhost_split_client.rb
443
+ - lib/splitclient-rb/cache/senders/impressions_sender_adapter.rb
444
+ - lib/splitclient-rb/cache/senders/localhost_repo_cleaner.rb
445
+ - lib/splitclient-rb/cache/stores/localhost_split_builder.rb
446
+ - lib/splitclient-rb/cache/stores/localhost_split_store.rb
447
+ - lib/splitclient-rb/cache/stores/store_utils.rb
335
448
  - lib/splitclient-rb/clients/split_client.rb
449
+ - lib/splitclient-rb/constants.rb
336
450
  - lib/splitclient-rb/engine/api/client.rb
337
451
  - lib/splitclient-rb/engine/api/events.rb
338
- - lib/splitclient-rb/engine/api/faraday_adapter/patched_net_http_persistent.rb
339
452
  - lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb
340
453
  - lib/splitclient-rb/engine/api/impressions.rb
341
- - lib/splitclient-rb/engine/api/metrics.rb
342
454
  - lib/splitclient-rb/engine/api/segments.rb
343
455
  - lib/splitclient-rb/engine/api/splits.rb
456
+ - lib/splitclient-rb/engine/api/telemetry_api.rb
457
+ - lib/splitclient-rb/engine/auth_api_client.rb
458
+ - lib/splitclient-rb/engine/back_off.rb
459
+ - lib/splitclient-rb/engine/common/impressions_counter.rb
460
+ - lib/splitclient-rb/engine/common/impressions_manager.rb
461
+ - lib/splitclient-rb/engine/common/noop_impressions_counter.rb
344
462
  - lib/splitclient-rb/engine/evaluator/splitter.rb
463
+ - lib/splitclient-rb/engine/events/events_delivery.rb
464
+ - lib/splitclient-rb/engine/events/events_manager.rb
465
+ - lib/splitclient-rb/engine/events/events_manager_config.rb
466
+ - lib/splitclient-rb/engine/events/events_task.rb
467
+ - lib/splitclient-rb/engine/events/noop_events_queue.rb
468
+ - lib/splitclient-rb/engine/fallback_treatment_calculator.rb
469
+ - lib/splitclient-rb/engine/impressions/noop_unique_keys_tracker.rb
470
+ - lib/splitclient-rb/engine/impressions/unique_keys_tracker.rb
345
471
  - lib/splitclient-rb/engine/matchers/all_keys_matcher.rb
346
472
  - lib/splitclient-rb/engine/matchers/between_matcher.rb
473
+ - lib/splitclient-rb/engine/matchers/between_semver_matcher.rb
347
474
  - lib/splitclient-rb/engine/matchers/combiners.rb
348
475
  - lib/splitclient-rb/engine/matchers/combining_matcher.rb
349
476
  - lib/splitclient-rb/engine/matchers/contains_all_matcher.rb
@@ -353,46 +480,101 @@ files:
353
480
  - lib/splitclient-rb/engine/matchers/ends_with_matcher.rb
354
481
  - lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb
355
482
  - lib/splitclient-rb/engine/matchers/equal_to_matcher.rb
483
+ - lib/splitclient-rb/engine/matchers/equal_to_semver_matcher.rb
356
484
  - lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb
357
485
  - lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb
486
+ - lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_semver_matcher.rb
487
+ - lib/splitclient-rb/engine/matchers/in_list_semver_matcher.rb
358
488
  - lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb
489
+ - lib/splitclient-rb/engine/matchers/less_than_or_equal_to_semver_matcher.rb
359
490
  - lib/splitclient-rb/engine/matchers/matcher.rb
360
491
  - lib/splitclient-rb/engine/matchers/matches_string_matcher.rb
361
492
  - lib/splitclient-rb/engine/matchers/negation_matcher.rb
362
493
  - lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb
494
+ - lib/splitclient-rb/engine/matchers/prerequisites_matcher.rb
495
+ - lib/splitclient-rb/engine/matchers/rule_based_segment_matcher.rb
496
+ - lib/splitclient-rb/engine/matchers/semver.rb
363
497
  - lib/splitclient-rb/engine/matchers/set_matcher.rb
364
498
  - lib/splitclient-rb/engine/matchers/starts_with_matcher.rb
365
499
  - lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb
366
500
  - lib/splitclient-rb/engine/matchers/whitelist_matcher.rb
367
501
  - lib/splitclient-rb/engine/metrics/binary_search_latency_tracker.rb
368
- - lib/splitclient-rb/engine/metrics/metrics.rb
502
+ - lib/splitclient-rb/engine/models/evaluation_options.rb
503
+ - lib/splitclient-rb/engine/models/event_active_subscriptions.rb
504
+ - lib/splitclient-rb/engine/models/events_metadata.rb
505
+ - lib/splitclient-rb/engine/models/fallback_treatment.rb
506
+ - lib/splitclient-rb/engine/models/fallback_treatments_configuration.rb
369
507
  - lib/splitclient-rb/engine/models/label.rb
508
+ - lib/splitclient-rb/engine/models/sdk_event.rb
509
+ - lib/splitclient-rb/engine/models/sdk_event_type.rb
510
+ - lib/splitclient-rb/engine/models/sdk_internal_event.rb
511
+ - lib/splitclient-rb/engine/models/sdk_internal_event_notification.rb
512
+ - lib/splitclient-rb/engine/models/segment_type.rb
370
513
  - lib/splitclient-rb/engine/models/split.rb
514
+ - lib/splitclient-rb/engine/models/split_http_response.rb
371
515
  - lib/splitclient-rb/engine/models/treatment.rb
516
+ - lib/splitclient-rb/engine/models/valid_sdk_event.rb
372
517
  - lib/splitclient-rb/engine/parser/condition.rb
373
518
  - lib/splitclient-rb/engine/parser/evaluator.rb
374
519
  - lib/splitclient-rb/engine/parser/partition.rb
375
- - lib/splitclient-rb/engine/parser/split_adapter.rb
520
+ - lib/splitclient-rb/engine/push_manager.rb
521
+ - lib/splitclient-rb/engine/status_manager.rb
522
+ - lib/splitclient-rb/engine/sync_manager.rb
523
+ - lib/splitclient-rb/engine/synchronizer.rb
376
524
  - lib/splitclient-rb/exceptions.rb
377
- - lib/splitclient-rb/localhost_split_factory.rb
378
- - lib/splitclient-rb/localhost_utils.rb
379
- - lib/splitclient-rb/managers/localhost_split_manager.rb
525
+ - lib/splitclient-rb/helpers/decryption_helper.rb
526
+ - lib/splitclient-rb/helpers/evaluator_helper.rb
527
+ - lib/splitclient-rb/helpers/repository_helper.rb
528
+ - lib/splitclient-rb/helpers/thread_helper.rb
529
+ - lib/splitclient-rb/helpers/util.rb
380
530
  - lib/splitclient-rb/managers/split_manager.rb
531
+ - lib/splitclient-rb/spec.rb
381
532
  - lib/splitclient-rb/split_config.rb
382
533
  - lib/splitclient-rb/split_factory.rb
383
534
  - lib/splitclient-rb/split_factory_builder.rb
535
+ - lib/splitclient-rb/split_factory_registry.rb
384
536
  - lib/splitclient-rb/split_logger.rb
537
+ - lib/splitclient-rb/sse/event_source/client.rb
538
+ - lib/splitclient-rb/sse/event_source/event_parser.rb
539
+ - lib/splitclient-rb/sse/event_source/event_types.rb
540
+ - lib/splitclient-rb/sse/event_source/stream_data.rb
541
+ - lib/splitclient-rb/sse/notification_manager_keeper.rb
542
+ - lib/splitclient-rb/sse/notification_processor.rb
543
+ - lib/splitclient-rb/sse/sse_handler.rb
544
+ - lib/splitclient-rb/sse/workers/segments_worker.rb
545
+ - lib/splitclient-rb/sse/workers/splits_worker.rb
546
+ - lib/splitclient-rb/telemetry/domain/constants.rb
547
+ - lib/splitclient-rb/telemetry/domain/structs.rb
548
+ - lib/splitclient-rb/telemetry/evaluation_consumer.rb
549
+ - lib/splitclient-rb/telemetry/evaluation_producer.rb
550
+ - lib/splitclient-rb/telemetry/init_consumer.rb
551
+ - lib/splitclient-rb/telemetry/init_producer.rb
552
+ - lib/splitclient-rb/telemetry/memory/memory_evaluation_consumer.rb
553
+ - lib/splitclient-rb/telemetry/memory/memory_evaluation_producer.rb
554
+ - lib/splitclient-rb/telemetry/memory/memory_init_consumer.rb
555
+ - lib/splitclient-rb/telemetry/memory/memory_init_producer.rb
556
+ - lib/splitclient-rb/telemetry/memory/memory_runtime_consumer.rb
557
+ - lib/splitclient-rb/telemetry/memory/memory_runtime_producer.rb
558
+ - lib/splitclient-rb/telemetry/memory/memory_synchronizer.rb
559
+ - lib/splitclient-rb/telemetry/redis/redis_evaluation_producer.rb
560
+ - lib/splitclient-rb/telemetry/redis/redis_init_producer.rb
561
+ - lib/splitclient-rb/telemetry/redis/redis_synchronizer.rb
562
+ - lib/splitclient-rb/telemetry/runtime_consumer.rb
563
+ - lib/splitclient-rb/telemetry/runtime_producer.rb
564
+ - lib/splitclient-rb/telemetry/storages/memory.rb
565
+ - lib/splitclient-rb/telemetry/sync_task.rb
566
+ - lib/splitclient-rb/telemetry/synchronizer.rb
385
567
  - lib/splitclient-rb/utilitites.rb
386
568
  - lib/splitclient-rb/validators.rb
387
569
  - lib/splitclient-rb/version.rb
570
+ - sonar-project.properties
388
571
  - splitclient-rb.gemspec
389
572
  - tasks/benchmark_get_treatment.rake
390
573
  - tasks/irb.rake
391
574
  homepage: https://github.com/splitio/ruby-client
392
575
  licenses:
393
- - Apache 2.0
576
+ - Apache-2.0
394
577
  metadata: {}
395
- post_install_message:
396
578
  rdoc_options: []
397
579
  require_paths:
398
580
  - lib
@@ -400,16 +582,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
400
582
  requirements:
401
583
  - - ">="
402
584
  - !ruby/object:Gem::Version
403
- version: '0'
585
+ version: 2.5.0
404
586
  required_rubygems_version: !ruby/object:Gem::Requirement
405
587
  requirements:
406
588
  - - ">="
407
589
  - !ruby/object:Gem::Version
408
590
  version: '0'
409
591
  requirements: []
410
- rubyforge_project:
411
- rubygems_version: 2.7.6
412
- signing_key:
592
+ rubygems_version: 3.7.1
413
593
  specification_version: 4
414
594
  summary: Ruby client for split SDK.
415
595
  test_files: []
data/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - "2.3.6"
5
-
6
- services:
7
- - redis-server
8
-
9
- before_install:
10
- - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
11
- - gem install bundler -v '< 2'
data/Appraisals DELETED
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- appraise 'faraday-before-0.13' do
4
- gem 'faraday', '>= 0.9', '< 0.13'
5
- gem 'net-http-persistent', '~> 3.0'
6
- end
7
-
8
- appraise 'faraday-after-0.13' do
9
- gem 'faraday', '> 0.13'
10
- end