1- import { Resolver , ResolverResolveParams } from 'graphql-compose' ;
2- import {
3- getErrorInterface ,
4- getManyErrorInterface ,
5- MongoError ,
6- ValidationError ,
7- ManyValidationError ,
8- } from '../../errors' ;
1+ import { Resolver } from 'graphql-compose' ;
2+ import { getErrorInterface , MongoError , ValidationError } from '../../errors' ;
93import { GraphQLError } from 'graphql-compose/lib/graphql' ;
104
11- export function makeHandleResolverError ( childResolve : any ) : any {
12- return async function handleResolverError (
13- rp : ResolverResolveParams < any , any , any >
14- ) : Promise < any > {
5+ /**
6+ * This helper add `error` field in payload & wraps `resolve` method.
7+ * It catches exception and return it in payload if user
8+ * requested `err` field in GraphQL-query.
9+ */
10+ export function addErrorCatcherField ( resolver : Resolver < any , any , any > ) : void {
11+ getErrorInterface ( resolver . schemaComposer ) ;
12+
13+ const payloadTC = resolver . getOTC ( ) ;
14+
15+ if ( ! payloadTC . hasField ( 'error' ) ) {
16+ payloadTC . setField ( 'error' , {
17+ type : 'ErrorInterface' ,
18+ description :
19+ 'Error that may occur during operation. If you request this field in GraphQL query, you will receive typed error in payload; otherwise error will be provided in root `errors` field of GraphQL response.' ,
20+ } ) ;
21+ }
22+
23+ const childResolve = resolver . resolve . bind ( resolver ) ;
24+ resolver . setResolve ( async ( rp ) => {
1525 try {
1626 const res = await childResolve ( rp ) ;
1727 return res ;
@@ -23,12 +33,6 @@ export function makeHandleResolverError(childResolve: any): any {
2333 message : e . message ,
2434 errors : e . errors ,
2535 } ;
26- } else if ( e instanceof ManyValidationError ) {
27- error = {
28- name : 'ManyValidationError' ,
29- message : e . message ,
30- errors : e . errors ,
31- } ;
3236 } else if ( e instanceof MongoError ) {
3337 error = {
3438 name : 'MongoError' ,
@@ -61,48 +65,5 @@ export function makeHandleResolverError(childResolve: any): any {
6165 ) ;
6266 }
6367 }
64- } ;
65- }
66- /**
67- * This helper add `error` field in payload & wraps `resolve` method.
68- * It catches exception and return it in payload if user
69- * requested `err` field in GraphQL-query.
70- */
71- export function addErrorCatcherField ( resolver : Resolver < any , any , any > ) : void {
72- getErrorInterface ( resolver . schemaComposer ) ;
73-
74- const payloadTC = resolver . getOTC ( ) ;
75-
76- if ( ! payloadTC . hasField ( 'error' ) ) {
77- payloadTC . setField ( 'error' , {
78- type : 'ErrorInterface' ,
79- description :
80- 'Error that may occur during operation. If you request this field in GraphQL query, you will receive typed error in payload; otherwise error will be provided in root `errors` field of GraphQL response.' ,
81- } ) ;
82- }
83-
84- const childResolve = resolver . resolve . bind ( resolver ) ;
85- resolver . setResolve ( makeHandleResolverError ( childResolve ) ) ;
86- }
87-
88- /**
89- * This helper add `error` field in payload & wraps `resolve` method.
90- * It catches exception and return it in payload if user
91- * requested `err` field in GraphQL-query.
92- */
93- export function addManyErrorCatcherField ( resolver : Resolver < any , any , any > ) : void {
94- getManyErrorInterface ( resolver . schemaComposer ) ;
95-
96- const payloadTC = resolver . getOTC ( ) ;
97-
98- if ( ! payloadTC . hasField ( 'error' ) ) {
99- payloadTC . setField ( 'error' , {
100- type : 'ManyErrorInterface' ,
101- description :
102- 'Error that may occur during operation. If you request this field in GraphQL query, you will receive typed error in payload; otherwise error will be provided in root `errors` field of GraphQL response.' ,
103- } ) ;
104- }
105-
106- const childResolve = resolver . resolve . bind ( resolver ) ;
107- resolver . setResolve ( makeHandleResolverError ( childResolve ) ) ;
68+ } ) ;
10869}
0 commit comments