@@ -37,7 +37,12 @@ import {
3737 DataConnectResponse
3838} from '../../network' ;
3939import { decoderImpl , encoderImpl } from '../../util/encoder' ;
40- import { Code , DataConnectError } from '../error' ;
40+ import {
41+ Code ,
42+ DataConnectError ,
43+ DataConnectOperationError ,
44+ DataConnectOperationFailureResponse
45+ } from '../error' ;
4146
4247import {
4348 OnCompleteSubscription ,
@@ -450,24 +455,30 @@ export class QueryManager {
450455 queryRef : QueryRef < Data , Variables >
451456 ) : Promise < void > {
452457 if ( response . errors && response . errors . length > 0 ) {
453- const error = new DataConnectError (
454- Code . OTHER ,
458+ const stringified = JSON . stringify (
459+ response . errors . map ( e => {
460+ if ( e && typeof e === 'object' ) {
461+ return {
462+ message : ( e as unknown as { message : string } ) . message ,
463+ code : ( e as unknown as { code ?: unknown } ) . code
464+ } ;
465+ }
466+ return e ;
467+ } )
468+ ) ;
469+ const failureResponse : DataConnectOperationFailureResponse = {
470+ errors : response . errors as [ ] ,
471+ data : response . data as Record < string , unknown >
472+ } ;
473+ const error = new DataConnectOperationError (
455474 'DataConnect error received from subscribe notification: ' +
456- JSON . stringify (
457- response . errors . map ( e => {
458- if ( e && typeof e === 'object' ) {
459- return {
460- message : ( e as unknown as { message : string } ) . message ,
461- code : ( e as unknown as { code ?: unknown } ) . code
462- } ;
463- }
464- return e ;
465- } )
466- )
475+ stringified ,
476+ failureResponse
467477 ) ;
468478 this . publishErrorToSubscribers ( key , error ) ;
469479 return ;
470480 }
481+
471482 const fetchTime = Date . now ( ) . toString ( ) ;
472483 const queryResult : QueryResult < Data , Variables > = {
473484 ref : queryRef ,
0 commit comments