sorbet-runtime 0.5.6370 → 0.5.6380

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: 986365d5cd9bdc3168c684133b87c50c8e972fffb9f053192daedd72963a4739
4
- data.tar.gz: b929a70dcc9afa3c149201a4fc0dc8e8e68bfe734f8eb643e285864282ef5ce1
3
+ metadata.gz: 49556be08ab286022f707803457534261073bd93a74f01d1426f834e960c9f7f
4
+ data.tar.gz: 324c158d85d372d73b785b0ca4c1058c1a74bd655ac5aa2ec5128f2b29012f76
5
5
  SHA512:
6
- metadata.gz: a000504dba7f388bbd561e858bd239936b85eb4b7e0bcbc413d548e28be25499763c35784ec57a3553ec3f63cc8279a3e5bbe90d65b3f41b25d61d4e7dcf956b
7
- data.tar.gz: 13c163b441af5a2e63c12fe51de2af93fe5bd0527f20d903090b4da6a685f2b4b0ba9c194c166799517ed5849487a07222b8c32046ab7a5e7acc8e4aa5f2b406
6
+ metadata.gz: 0bc3267d9e763d348f0fd131f853395b3a5890e0f5ee4bf42d3d1832433a1242c83421556d152b4b5c93600ff66cdf497522bd5d83f01e0bf6702cfa3d305cc9
7
+ data.tar.gz: 04d00ee175bff8c5b17bc59a6f0889b52457118694fe1e752ebd2333cf2a4412e6565db6a287a9a82e68590d22666705ea0dc2f180265ada2fa502b4260bdd54
@@ -290,6 +290,51 @@ module T::Configuration
290
290
  end
291
291
  end
292
292
 
293
+ # Set a handler for deserialization errors
294
+ #
295
+ # These generally shouldn't stop execution of the program, but rather inform
296
+ # some party of the error to action on later.
297
+ #
298
+ # @param [Lambda, Proc, Object, nil] value Proc that handles the error
299
+ # report (pass nil to reset to default behavior)
300
+ #
301
+ # Parameters passed to value.call:
302
+ #
303
+ # @param [Class] klass The class of the top-level object being deserialized
304
+ # @param [String] prop_name The name of the prop being deserialized
305
+ # @param [Object] value The prop value being deserialized
306
+ # @param [Error] orig_error The original error raised during deserialization
307
+ #
308
+ # @example
309
+ # T::Configuration.deserialization_error_handler = lambda do |klass, prop_name, value, orig_error}
310
+ # puts "Error deserializing #{prop_name} on #{klass}: #{orig_error.message}
311
+ # end
312
+ def self.deserialization_error_handler=(value)
313
+ validate_lambda_given!(value)
314
+ @deserialization_error_handler = value
315
+ end
316
+
317
+ private_class_method def self.deserialization_error_handler_default(klass, prop_name, value, orig_error)
318
+ soft_assert_handler(
319
+ 'Deserialization error (probably unexpected stored type)',
320
+ storytime: {
321
+ klass: klass,
322
+ prop: prop_name,
323
+ value: value,
324
+ error: orig_error.message,
325
+ notify: 'djudd'
326
+ }
327
+ )
328
+ end
329
+
330
+ def self.deserialization_error_handler(klass, prop_name, value, orig_error)
331
+ if @deserialization_error_handler
332
+ @deserialization_error_handler.call(klass, prop_name, value, orig_error)
333
+ else
334
+ deserialization_error_handler_default(klass, prop_name, value, orig_error)
335
+ end
336
+ end
337
+
293
338
  # Set a handler for soft assertions
294
339
  #
295
340
  # These generally shouldn't stop execution of the program, but rather inform
@@ -261,7 +261,8 @@ module T::Props
261
261
  private_class_method def self.whitelisted_methods_for_deserialize
262
262
  @whitelisted_methods_for_deserialize ||= {
263
263
  lvar: %i{dup map transform_values transform_keys each_with_object nil? []= to_f},
264
- const: %i[deserialize from_hash deep_clone_object soft_assert_handler],
264
+ self: %i{class},
265
+ const: %i[deserialize from_hash deep_clone_object deserialization_error_handler],
265
266
  }
266
267
  end
267
268
  end
@@ -57,15 +57,11 @@ module T::Props
57
57
  begin
58
58
  #{transformation}
59
59
  rescue NoMethodError => e
60
- T::Configuration.soft_assert_handler(
61
- 'Deserialization error (probably unexpected stored type)',
62
- storytime: {
63
- klass: self.class,
64
- prop: #{prop.inspect},
65
- value: val,
66
- error: e.message,
67
- notify: 'djudd'
68
- }
60
+ T::Configuration.deserialization_error_handler(
61
+ self.class,
62
+ #{prop.inspect},
63
+ val,
64
+ e,
69
65
  )
70
66
  val
71
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6370
4
+ version: 0.5.6380
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-10 00:00:00.000000000 Z
11
+ date: 2021-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest