Skip to content
This repository has been archived by the owner on Dec 8, 2021. It is now read-only.

Commit

Permalink
refactor(gg): share resolver return type renderer
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonkuhrt committed Jan 25, 2019
1 parent eea3e40 commit 6b66923
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
3 changes: 3 additions & 0 deletions packages/graphqlgen/src/generators/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,9 @@ export const union = (types: string[]): string => {
return types.join(' | ')
}

export const resolverReturnType = (returnType: string): string =>
union([returnType, `Promise<${returnType}>`])

type FieldPrintOptions = {
isReturn?: boolean
}
Expand Down
13 changes: 7 additions & 6 deletions packages/graphqlgen/src/generators/flow-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import {
UnionsMap,
createInterfacesMap,
createUnionsMap,
resolverReturnType,
} from './common'
import { renderTypeResolveTypeResolver } from './ts-generator'

Expand Down Expand Up @@ -352,13 +353,15 @@ function renderResolverFunctionInterface(
return `
export type ${resolverName} = {|
subscribe: ${resolverDefinition} => AsyncIterator<${returnType}> | Promise<AsyncIterator<${returnType}>>,
resolve?: ${resolverDefinition} => ${returnType} | Promise<${returnType}>
resolve?: ${resolverDefinition} => ${resolverReturnType(returnType)}
|}
`
}

return `
export type ${resolverName} = ${resolverDefinition} => ${returnType} | Promise<${returnType}>
export type ${resolverName} = ${resolverDefinition} => ${resolverReturnType(
returnType,
)}
`
}

Expand Down Expand Up @@ -416,14 +419,12 @@ function renderResolverTypeInterfaceFunction(
return `
${field.name}: {|
subscribe: ${resolverDefinition} => AsyncIterator<${returnType}> | Promise<AsyncIterator<${returnType}>>,
resolve?: ${resolverDefinition} => ${returnType} | Promise<${returnType}>
resolve?: ${resolverDefinition} => ${resolverReturnType(returnType)}
|}
`
}
return `
${
field.name
}: ${resolverDefinition} => ${returnType} | Promise<${returnType}>,
${field.name}: ${resolverDefinition} => ${resolverReturnType(returnType)},
`
}

Expand Down
4 changes: 1 addition & 3 deletions packages/graphqlgen/src/generators/ts-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
createInterfacesMap,
createUnionsMap,
union,
resolverReturnType,
} from './common'
import { TypeAliasDefinition } from '../introspection/types'
import { upperFirst } from '../utils'
Expand Down Expand Up @@ -502,9 +503,6 @@ function renderResolverFunctionInterface(
`
}

const resolverReturnType = (returnType: string): string =>
union([returnType, `Promise<${returnType}>`])

function renderResolverTypeInterface(
type: GraphQLTypeObject | GraphQLInterfaceObject,
modelMap: ModelMap,
Expand Down

0 comments on commit 6b66923

Please sign in to comment.