File tree Expand file tree Collapse file tree 1 file changed +18
-1
lines changed Expand file tree Collapse file tree 1 file changed +18
-1
lines changed Original file line number Diff line number Diff line change 238238
239239 case ONE_OF : {
240240 var decs = decoder . decoders ;
241+ var errs = new Array ( decs . length ) ;
241242
242243 for ( var i = 0 ; i < decs . length ; i ++ ) {
243244 var result = decodeInternal ( decs [ i ] , value ) ;
244245
245246 if ( isOk ( result ) ) {
246247 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' ;
247264 }
248265 }
249266
250- return err ( 'No oneOf decoder matched ') ;
267+ return err ( str + '\n┴\n ') ;
251268 }
252269
253270 case UNKNOWN : {
You can’t perform that action at this time.
0 commit comments