@@ -445,64 +445,20 @@ function renderResolverFunctionInterfaces(
445445 context ?: ContextDefinition ,
446446) : string {
447447 return type . fields
448- . map ( field =>
449- renderResolverFunctionInterface (
450- field ,
451- type ,
452- modelMap ,
453- interfacesMap ,
454- unionsMap ,
455- context ,
456- ) ,
448+ . map (
449+ field =>
450+ `export type ${ upperFirst ( field . name ) } Resolver = ${ renderTypeResolver (
451+ field ,
452+ type ,
453+ modelMap ,
454+ interfacesMap ,
455+ unionsMap ,
456+ context ,
457+ ) } `,
457458 )
458459 . join ( os . EOL )
459460}
460461
461- // MARK
462- function renderResolverFunctionInterface (
463- field : GraphQLTypeField ,
464- type : GraphQLTypeObject ,
465- modelMap : ModelMap ,
466- interfacesMap : InterfacesMap ,
467- unionsMap : UnionsMap ,
468- context ?: ContextDefinition ,
469- ) : string {
470- const resolverName = `${ upperFirst ( field . name ) } Resolver`
471- const resolverDefinition = `
472- (
473- parent: ${ getModelName ( type . type as any , modelMap , 'undefined' ) } ,
474- args: ${
475- field . arguments . length > 0 ? `Args${ upperFirst ( field . name ) } ` : '{}'
476- } ,
477- ctx: ${ getContextName ( context ) } ,
478- info: GraphQLResolveInfo,
479- )
480- `
481-
482- const returnType = printFieldLikeType (
483- field ,
484- modelMap ,
485- interfacesMap ,
486- unionsMap ,
487- { isReturn : true } ,
488- )
489-
490- if ( type . name === 'Subscription' ) {
491- return `
492- export type ${ resolverName } = {
493- subscribe: ${ resolverDefinition } => AsyncIterator<${ returnType } > | Promise<AsyncIterator<${ returnType } >>
494- resolve?: ${ resolverDefinition } => ${ returnType } | Promise<${ returnType } >
495- }
496- `
497- }
498-
499- return `
500- export type ${ resolverName } = ${ resolverDefinition } => ${ resolverReturnType (
501- returnType ,
502- ) }
503- `
504- }
505-
506462function renderResolverTypeInterface (
507463 type : GraphQLTypeObject | GraphQLInterfaceObject ,
508464 modelMap : ModelMap ,
@@ -514,15 +470,16 @@ function renderResolverTypeInterface(
514470 return `
515471 export interface ${ interfaceName } {
516472 ${ type . fields
517- . map ( field =>
518- renderResolverTypeInterfaceFunction (
519- field ,
520- type ,
521- modelMap ,
522- interfacesMap ,
523- unionsMap ,
524- context ,
525- ) ,
473+ . map (
474+ field =>
475+ `${ field . name } : ${ renderTypeResolver (
476+ field ,
477+ type ,
478+ modelMap ,
479+ interfacesMap ,
480+ unionsMap ,
481+ context ,
482+ ) } `,
526483 )
527484 . join ( os . EOL ) }
528485 ${ renderIsTypeOfFunctionInterface (
@@ -536,14 +493,14 @@ function renderResolverTypeInterface(
536493 `
537494}
538495
539- function renderResolverTypeInterfaceFunction (
496+ const renderTypeResolver = (
540497 field : GraphQLTypeField ,
541498 type : GraphQLTypeObject | GraphQLInterfaceObject ,
542499 modelMap : ModelMap ,
543500 interfacesMap : InterfacesMap ,
544501 unionsMap : UnionsMap ,
545502 context ?: ContextDefinition ,
546- ) : string {
503+ ) : string => {
547504 let parent : string
548505
549506 if ( type . type . isInterface ) {
@@ -556,7 +513,7 @@ function renderResolverTypeInterfaceFunction(
556513 parent = getModelName ( type . type as any , modelMap , 'undefined' )
557514 }
558515
559- const resolverDefinition = `
516+ const params = `
560517 (
561518 parent: ${ parent } ,
562519 args: ${
@@ -576,18 +533,20 @@ function renderResolverTypeInterfaceFunction(
576533
577534 if ( type . name === 'Subscription' ) {
578535 return `
579- ${ field . name } : {
580- subscribe: ${ resolverDefinition } => AsyncIterator<${ returnType } > | Promise<AsyncIterator<${ returnType } >>
581- resolve?: ${ resolverDefinition } => ${ returnType } | Promise<${ returnType } >
536+ {
537+ subscribe: ${ params } => ${ resolverReturnType (
538+ `AsyncIterator<${ returnType } >` ,
539+ ) }
540+ resolve?: ${ params } => ${ resolverReturnType ( returnType ) }
582541 }
583542 `
584543 }
585544
586- return `
587- ${
588- field . name
589- } : ${ resolverDefinition } => ${ returnType } | Promise<${ returnType } >
545+ const func = `
546+ ${ params } => ${ resolverReturnType ( returnType ) }
590547 `
548+
549+ return func
591550}
592551
593552function renderResolvers ( args : GenerateArgs ) : string {
0 commit comments