11import { getPromise } from './promise' ;
22import { isFunction , Promisify , isNotNullOrUndefined } from './util' ;
33
4+ const Promise = getPromise ( ) ;
45
5- export const createResolver = ( resFn , errFn ) => {
6+ export interface ResultFunction < ResulType > {
7+ ( root , args , context , info ) : Promise < ResulType > | ResulType | void
8+ }
9+
10+ export interface ErrorFunction < ErrorType > {
11+ ( root , args , context , err ) : ErrorType | void
12+ }
13+
14+ export interface Resolver < ResulType > {
15+ ( root , args : { } , context : { } , info : { } ) : Promise < ResulType >
16+ createResolver ?: < R , E > ( resFn : ResultFunction < R > , errFn ?: ErrorFunction < E > ) => Resolver < R >
17+ }
18+
19+ export const createResolver = < R , E > ( resFn : ResultFunction < R > , errFn : ErrorFunction < E > ) => {
620 const Promise = getPromise ( ) ;
7- const baseResolver = ( root , args = { } , context = { } , info = { } ) => {
21+ const baseResolver : Resolver < R > = ( root , args = { } , context = { } , info = { } ) => {
822 // Return resolving promise with `null` if the resolver function param is not a function
923 if ( ! isFunction ( resFn ) ) return Promise . resolve ( null ) ;
1024 return Promisify ( resFn ) ( root , args , context , info ) . catch ( e => {
@@ -20,7 +34,7 @@ export const createResolver = (resFn, errFn) => {
2034 } ) ;
2135 } ) ;
2236 } ;
23- baseResolver [ ' createResolver' ] = ( cResFn , cErrFn ) => {
37+ baseResolver . createResolver = ( cResFn , cErrFn ) => {
2438 const Promise = getPromise ( ) ;
2539
2640 const childResFn = ( root , args , context , info = { } ) => {
0 commit comments