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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49556be08ab286022f707803457534261073bd93a74f01d1426f834e960c9f7f
|
4
|
+
data.tar.gz: 324c158d85d372d73b785b0ca4c1058c1a74bd655ac5aa2ec5128f2b29012f76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bc3267d9e763d348f0fd131f853395b3a5890e0f5ee4bf42d3d1832433a1242c83421556d152b4b5c93600ff66cdf497522bd5d83f01e0bf6702cfa3d305cc9
|
7
|
+
data.tar.gz: 04d00ee175bff8c5b17bc59a6f0889b52457118694fe1e752ebd2333cf2a4412e6565db6a287a9a82e68590d22666705ea0dc2f180265ada2fa502b4260bdd54
|
data/lib/types/configuration.rb
CHANGED
@@ -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
|
-
|
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.
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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.
|
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-
|
11
|
+
date: 2021-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|