openfeature-sdk-sorbet 0.3.1 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b35975b45d85edc14dd6d1250a6e43c2e8e5bf0f16bfa76c46e230fb1e075bd8
4
- data.tar.gz: 63813db644b864365e7631d6b804082bfe460810dbd7f5ce1bbd8e1f5e0bbdd3
3
+ metadata.gz: c618b9b2a1026874a45d03ea989183343bb2653a0de5184d510ba37b37d7abfe
4
+ data.tar.gz: 6573830336c85fb9c4bc66a3903dde8745947b510d45d145e040f4f5592d9eaa
5
5
  SHA512:
6
- metadata.gz: 21e85e1fac1387b02841759807c13ce5b36bd505148c4eb3e4cc1bcf8240720fee801534f6013353b57d377e26332063381f36da337aefc7b36db8511e38ed2f
7
- data.tar.gz: 5aa40c6064570f50c405fa4b3b9879535240802e5cdf7a384807dbd2961466313cd9242d2b6b13c0ee17f0b4a17f1d06440ac5d882f1c7bb5f1daafa8d4ff2ef
6
+ metadata.gz: 02a81d4faa83f8915aa40f6b23aa8261746ef3d3df0ad4155d5a56a12aad98f81fc5a58b7c874e62253e7e43b92d92980b8adf307fd39fce02140e609598a7bd
7
+ data.tar.gz: 3572884d4efb1813c9388534758ebca4791c1f00c1682e8edaa0fb337d1f327be4efd4df1ccd51f7954f23095d6de13ed7818fc065eb143b3a9f62e165d1118e
data/.rubocop.yml CHANGED
@@ -10,7 +10,7 @@ require:
10
10
 
11
11
  AllCops:
12
12
  NewCops: enable
13
- TargetRubyVersion: 3.1
13
+ TargetRubyVersion: 3.0
14
14
  Exclude:
15
15
  - sorbet/**/*.rbi
16
16
 
data/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.4.0] - 2024-02-21
10
+
11
+ ### Changed
12
+
13
+ - Set minimum Ruby version back to 3.0.
14
+
9
15
  ## [0.3.1] - 2024-01-26
10
16
 
11
17
  ### Changed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openfeature-sdk-sorbet (0.3.1)
4
+ openfeature-sdk-sorbet (0.4.0)
5
5
  sorbet-runtime (~> 0.5)
6
6
  sorbet-struct-comparable (~> 1.3)
7
7
  zeitwerk (~> 2.6)
@@ -25,7 +25,7 @@ module OpenFeature
25
25
  end
26
26
  def initialize(provider:, name: nil, evaluation_context: nil, hooks: [])
27
27
  @provider = provider
28
- @client_metadata = T.let(ClientMetadata.new(name:), ClientMetadata)
28
+ @client_metadata = T.let(ClientMetadata.new(name: name), ClientMetadata)
29
29
  @evaluation_context = evaluation_context
30
30
  @hooks = hooks
31
31
  end
@@ -44,10 +44,10 @@ module OpenFeature
44
44
  ).returns(T::Boolean)
45
45
  end
46
46
  def fetch_boolean_value(flag_key:, default_value:, context: nil, options: nil)
47
- evaluated_context = build_context_with_before_hooks(flag_key:, default_value:,
48
- invocation_context: context, options:,
47
+ evaluated_context = build_context_with_before_hooks(flag_key: flag_key, default_value: default_value,
48
+ invocation_context: context, options: options,
49
49
  flag_type: "Boolean")
50
- provider.resolve_boolean_value(flag_key:, default_value:, context: evaluated_context)
50
+ provider.resolve_boolean_value(flag_key: flag_key, default_value: default_value, context: evaluated_context)
51
51
  .value
52
52
  rescue StandardError
53
53
  default_value
@@ -63,14 +63,14 @@ module OpenFeature
63
63
  end
64
64
  def fetch_boolean_details(flag_key:, default_value:, context: nil, options: nil) # rubocop:disable Lint/UnusedMethodArgument
65
65
  details = provider.resolve_boolean_value(
66
- flag_key:,
67
- default_value:,
66
+ flag_key: flag_key,
67
+ default_value: default_value,
68
68
  context: build_context(context)
69
69
  )
70
70
 
71
- EvaluationDetails.from_resolution_details(details, flag_key:)
71
+ EvaluationDetails.from_resolution_details(details, flag_key: flag_key)
72
72
  rescue StandardError => e
73
- EvaluationDetails.from_error(e.message, flag_key:, default_value:)
73
+ EvaluationDetails.from_error(e.message, flag_key: flag_key, default_value: default_value)
74
74
  end
75
75
 
76
76
  sig do
@@ -82,11 +82,11 @@ module OpenFeature
82
82
  ).returns(String)
83
83
  end
84
84
  def fetch_string_value(flag_key:, default_value:, context: nil, options: nil)
85
- evaluated_context = build_context_with_before_hooks(flag_key:, default_value:,
86
- invocation_context: context, options:,
85
+ evaluated_context = build_context_with_before_hooks(flag_key: flag_key, default_value: default_value,
86
+ invocation_context: context, options: options,
87
87
  flag_type: "String")
88
88
  provider
89
- .resolve_string_value(flag_key:, default_value:, context: evaluated_context)
89
+ .resolve_string_value(flag_key: flag_key, default_value: default_value, context: evaluated_context)
90
90
  .value
91
91
  rescue StandardError
92
92
  default_value
@@ -102,14 +102,14 @@ module OpenFeature
102
102
  end
103
103
  def fetch_string_details(flag_key:, default_value:, context: nil, options: nil) # rubocop:disable Lint/UnusedMethodArgument
104
104
  details = provider.resolve_string_value(
105
- flag_key:,
106
- default_value:,
105
+ flag_key: flag_key,
106
+ default_value: default_value,
107
107
  context: build_context(context)
108
108
  )
109
109
 
110
- EvaluationDetails.from_resolution_details(details, flag_key:)
110
+ EvaluationDetails.from_resolution_details(details, flag_key: flag_key)
111
111
  rescue StandardError => e
112
- EvaluationDetails.from_error(e.message, flag_key:, default_value:)
112
+ EvaluationDetails.from_error(e.message, flag_key: flag_key, default_value: default_value)
113
113
  end
114
114
 
115
115
  sig do
@@ -121,11 +121,11 @@ module OpenFeature
121
121
  ).returns(Numeric)
122
122
  end
123
123
  def fetch_number_value(flag_key:, default_value:, context: nil, options: nil)
124
- evaluated_context = build_context_with_before_hooks(flag_key:, default_value:,
125
- invocation_context: context, options:,
124
+ evaluated_context = build_context_with_before_hooks(flag_key: flag_key, default_value: default_value,
125
+ invocation_context: context, options: options,
126
126
  flag_type: "Number")
127
127
  provider
128
- .resolve_number_value(flag_key:, default_value:, context: evaluated_context)
128
+ .resolve_number_value(flag_key: flag_key, default_value: default_value, context: evaluated_context)
129
129
  .value
130
130
  rescue StandardError
131
131
  default_value
@@ -141,14 +141,14 @@ module OpenFeature
141
141
  end
142
142
  def fetch_number_details(flag_key:, default_value:, context: nil, options: nil) # rubocop:disable Lint/UnusedMethodArgument
143
143
  details = provider.resolve_number_value(
144
- flag_key:,
145
- default_value:,
144
+ flag_key: flag_key,
145
+ default_value: default_value,
146
146
  context: build_context(context)
147
147
  )
148
148
 
149
- EvaluationDetails.from_resolution_details(details, flag_key:)
149
+ EvaluationDetails.from_resolution_details(details, flag_key: flag_key)
150
150
  rescue StandardError => e
151
- EvaluationDetails.from_error(e.message, flag_key:, default_value:)
151
+ EvaluationDetails.from_error(e.message, flag_key: flag_key, default_value: default_value)
152
152
  end
153
153
 
154
154
  sig do
@@ -160,11 +160,11 @@ module OpenFeature
160
160
  ).returns(Integer)
161
161
  end
162
162
  def fetch_integer_value(flag_key:, default_value:, context: nil, options: nil)
163
- evaluated_context = build_context_with_before_hooks(flag_key:, default_value:,
164
- invocation_context: context, options:,
163
+ evaluated_context = build_context_with_before_hooks(flag_key: flag_key, default_value: default_value,
164
+ invocation_context: context, options: options,
165
165
  flag_type: "Integer")
166
166
  provider
167
- .resolve_number_value(flag_key:, default_value:, context: evaluated_context)
167
+ .resolve_number_value(flag_key: flag_key, default_value: default_value, context: evaluated_context)
168
168
  .value
169
169
  .to_i
170
170
  rescue StandardError
@@ -180,11 +180,11 @@ module OpenFeature
180
180
  ).returns(Float)
181
181
  end
182
182
  def fetch_float_value(flag_key:, default_value:, context: nil, options: nil)
183
- evaluated_context = build_context_with_before_hooks(flag_key:, default_value:,
184
- invocation_context: context, options:,
183
+ evaluated_context = build_context_with_before_hooks(flag_key: flag_key, default_value: default_value,
184
+ invocation_context: context, options: options,
185
185
  flag_type: "Float")
186
186
  provider
187
- .resolve_number_value(flag_key:, default_value:, context: evaluated_context)
187
+ .resolve_number_value(flag_key: flag_key, default_value: default_value, context: evaluated_context)
188
188
  .value
189
189
  .to_f
190
190
  rescue StandardError
@@ -200,11 +200,11 @@ module OpenFeature
200
200
  ).returns(Structure)
201
201
  end
202
202
  def fetch_structure_value(flag_key:, default_value:, context: nil, options: nil)
203
- evaluated_context = build_context_with_before_hooks(flag_key:, default_value:,
204
- invocation_context: context, options:,
203
+ evaluated_context = build_context_with_before_hooks(flag_key: flag_key, default_value: default_value,
204
+ invocation_context: context, options: options,
205
205
  flag_type: "Structure")
206
206
  provider
207
- .resolve_structure_value(flag_key:, default_value:, context: evaluated_context)
207
+ .resolve_structure_value(flag_key: flag_key, default_value: default_value, context: evaluated_context)
208
208
  .value
209
209
  rescue StandardError
210
210
  default_value
@@ -220,14 +220,14 @@ module OpenFeature
220
220
  end
221
221
  def fetch_structure_details(flag_key:, default_value:, context: nil, options: nil) # rubocop:disable Lint/UnusedMethodArgument
222
222
  details = provider.resolve_structure_value(
223
- flag_key:,
224
- default_value:,
223
+ flag_key: flag_key,
224
+ default_value: default_value,
225
225
  context: build_context(context)
226
226
  )
227
227
 
228
- EvaluationDetails.from_resolution_details(details, flag_key:)
228
+ EvaluationDetails.from_resolution_details(details, flag_key: flag_key)
229
229
  rescue StandardError => e
230
- EvaluationDetails.from_error(e.message, flag_key:, default_value:)
230
+ EvaluationDetails.from_error(e.message, flag_key: flag_key, default_value: default_value)
231
231
  end
232
232
 
233
233
  private
@@ -245,8 +245,8 @@ module OpenFeature
245
245
  ).returns(EvaluationContext)
246
246
  end
247
247
  def build_context_with_before_hooks(flag_key:, default_value:, invocation_context:, options:, flag_type:)
248
- hook_context = build_hook_context(flag_key:, default_value:,
249
- invocation_context:, flag_type:)
248
+ hook_context = build_hook_context(flag_key: flag_key, default_value: default_value,
249
+ invocation_context: invocation_context, flag_type: flag_type)
250
250
  OpenFeature::Hook::BeforeHook.call(hooks: build_hooks(options), context: hook_context,
251
251
  hints: {})
252
252
  end
@@ -271,9 +271,9 @@ module OpenFeature
271
271
  end
272
272
  def build_hook_context(flag_key:, default_value:, invocation_context:, flag_type:)
273
273
  evaluation_context = build_context(invocation_context) || OpenFeature::EvaluationContext.new
274
- HookContext.new(flag_key:, default_value:,
275
- evaluation_context:, flag_type:,
276
- client_metadata:, provider_metadata: provider.metadata)
274
+ HookContext.new(flag_key: flag_key, default_value: default_value,
275
+ evaluation_context: evaluation_context, flag_type: flag_type,
276
+ client_metadata: client_metadata, provider_metadata: provider.metadata)
277
277
  end
278
278
 
279
279
  sig { params(invocation_context: T.nilable(EvaluationContext)).returns(T.nilable(EvaluationContext)) }
@@ -281,7 +281,7 @@ module OpenFeature
281
281
  EvaluationContextBuilder.new.call(
282
282
  global_context: OpenFeature.configuration.evaluation_context,
283
283
  client_context: evaluation_context,
284
- invocation_context:
284
+ invocation_context: invocation_context
285
285
  )
286
286
  end
287
287
  end
@@ -27,7 +27,7 @@ module OpenFeature
27
27
  sig { params(key: String, value: T.untyped).returns(EvaluationContext) }
28
28
  def add_field(key, value)
29
29
  EvaluationContext.new(
30
- targeting_key:,
30
+ targeting_key: targeting_key,
31
31
  fields: fields.merge({ key => value })
32
32
  )
33
33
  end
@@ -25,7 +25,7 @@ module OpenFeature
25
25
  sig { params(details: ResolutionDetails[SelfValue], flag_key: String).returns(EvaluationDetails[SelfValue]) }
26
26
  def from_resolution_details(details, flag_key:)
27
27
  EvaluationDetails.new(
28
- flag_key:,
28
+ flag_key: flag_key,
29
29
  value: details.value,
30
30
  error_code: details.error_code,
31
31
  error_message: details.error_message,
@@ -44,7 +44,7 @@ module OpenFeature
44
44
  end
45
45
  def from_error(error_message, flag_key:, default_value:)
46
46
  EvaluationDetails.new(
47
- flag_key:,
47
+ flag_key: flag_key,
48
48
  value: default_value,
49
49
  error_code: ErrorCode::General,
50
50
  error_message: "Provider raised error: #{error_message}",
@@ -35,7 +35,7 @@ module OpenFeature
35
35
  hooks.before.reduce(context.evaluation_context) do |evaluation_context, hook|
36
36
  hook.call(
37
37
  context: context.with_new_evaluation_context(evaluation_context),
38
- hints:
38
+ hints: hints
39
39
  )
40
40
  end
41
41
  )
@@ -22,9 +22,9 @@ module OpenFeature
22
22
  # Needed as opposed to .with due to https://sorbet.org/docs/tstruct#from_hash-gotchas
23
23
  sig { params(new_context: EvaluationContext).returns(HookContext[Value]) }
24
24
  def with_new_evaluation_context(new_context)
25
- OpenFeature::HookContext.new(flag_key:, flag_type:, default_value:,
26
- evaluation_context: new_context, client_metadata:,
27
- provider_metadata:)
25
+ OpenFeature::HookContext.new(flag_key: flag_key, flag_type: flag_type, default_value: default_value,
26
+ evaluation_context: new_context, client_metadata: client_metadata,
27
+ provider_metadata: provider_metadata)
28
28
  end
29
29
  end
30
30
  end
@@ -28,7 +28,7 @@ module OpenFeature
28
28
 
29
29
  sig { override.params(context: EvaluationContext).void }
30
30
  def init(context:)
31
- providers.each { |provider| provider.init(context:) }
31
+ providers.each { |provider| provider.init(context: context) }
32
32
  @status = if providers.all? { |provider| provider.status == ProviderStatus::Ready }
33
33
  ProviderStatus::Ready
34
34
  else
@@ -53,8 +53,8 @@ module OpenFeature
53
53
  .returns(ResolutionDetails[T::Boolean])
54
54
  end
55
55
  def resolve_boolean_value(flag_key:, default_value:, context: nil)
56
- resolve_from_sources(default_value:) do |provider|
57
- provider.resolve_boolean_value(flag_key:, default_value:, context:)
56
+ resolve_from_sources(default_value: default_value) do |provider|
57
+ provider.resolve_boolean_value(flag_key: flag_key, default_value: default_value, context: context)
58
58
  end
59
59
  end
60
60
 
@@ -68,8 +68,8 @@ module OpenFeature
68
68
  .returns(ResolutionDetails[Numeric])
69
69
  end
70
70
  def resolve_number_value(flag_key:, default_value:, context: nil)
71
- resolve_from_sources(default_value:) do |provider|
72
- provider.resolve_number_value(flag_key:, default_value:, context:)
71
+ resolve_from_sources(default_value: default_value) do |provider|
72
+ provider.resolve_number_value(flag_key: flag_key, default_value: default_value, context: context)
73
73
  end
74
74
  end
75
75
 
@@ -83,8 +83,8 @@ module OpenFeature
83
83
  .returns(ResolutionDetails[Structure])
84
84
  end
85
85
  def resolve_structure_value(flag_key:, default_value:, context: nil)
86
- resolve_from_sources(default_value:) do |provider|
87
- provider.resolve_structure_value(flag_key:, default_value:, context:)
86
+ resolve_from_sources(default_value: default_value) do |provider|
87
+ provider.resolve_structure_value(flag_key: flag_key, default_value: default_value, context: context)
88
88
  end
89
89
  end
90
90
 
@@ -98,8 +98,8 @@ module OpenFeature
98
98
  .returns(ResolutionDetails[String])
99
99
  end
100
100
  def resolve_string_value(flag_key:, default_value:, context: nil)
101
- resolve_from_sources(default_value:) do |provider|
102
- provider.resolve_string_value(flag_key:, default_value:, context:)
101
+ resolve_from_sources(default_value: default_value) do |provider|
102
+ provider.resolve_string_value(flag_key: flag_key, default_value: default_value, context: context)
103
103
  end
104
104
  end
105
105
 
data/lib/open_feature.rb CHANGED
@@ -44,8 +44,8 @@ module OpenFeature
44
44
  def create_client(name: nil, evaluation_context: nil, hooks: nil)
45
45
  Client.new(
46
46
  provider: configuration.provider,
47
- name:,
48
- evaluation_context:,
47
+ name: name,
48
+ evaluation_context: evaluation_context,
49
49
  hooks: Array(hooks)
50
50
  )
51
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openfeature-sdk-sorbet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max VelDink
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-26 00:00:00.000000000 Z
11
+ date: 2024-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime
@@ -145,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - ">="
147
147
  - !ruby/object:Gem::Version
148
- version: '3.1'
148
+ version: '3.0'
149
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - ">="