File tree 1 file changed +18
-1
lines changed
1 file changed +18
-1
lines changed Original file line number Diff line number Diff line change 238
238
239
239
case ONE_OF : {
240
240
var decs = decoder . decoders ;
241
+ var errs = new Array ( decs . length ) ;
241
242
242
243
for ( var i = 0 ; i < decs . length ; i ++ ) {
243
244
var result = decodeInternal ( decs [ i ] , value ) ;
244
245
245
246
if ( isOk ( result ) ) {
246
247
return result ;
248
+ } else {
249
+ errs [ i ] = result ;
250
+ }
251
+ }
252
+
253
+ var str = 'oneOf failed, because none of its child decoders were successful in decoding the value, here is a list of all errors:\n\n' ;
254
+
255
+ for ( var err_i = 0 ; err_i < errs . length ; err_i ++ ) {
256
+ var error = errs [ err_i ] ;
257
+
258
+ str += err_i === 0 ? '┌' : '├' ;
259
+ str += '── Decoder at index ' + err_i + ' reported:\n│\n│' ;
260
+ str += ( '\n' + error . msg ) . replace ( / \n / g, '\n│ ' ) + '\n│' ;
261
+
262
+ if ( err_i < errs . length - 1 ) {
263
+ str += '\n│\n' ;
247
264
}
248
265
}
249
266
250
- return err ( 'No oneOf decoder matched ') ;
267
+ return err ( str + '\n┴\n ') ;
251
268
}
252
269
253
270
case UNKNOWN : {
You can’t perform that action at this time.
0 commit comments