@@ -87,6 +87,7 @@ import type { Thunk } from './utils/definitions';
8787import TypeComposer from './typeComposer' ;
8888import InputTypeComposer from './inputTypeComposer' ;
8989import Resolver from './resolver' ;
90+ import GQC from './gqc' ;
9091
9192export type TypeDefinitionString = string ; // eg type Name { field: Int }
9293export type TypeWrappedString = string ; // eg. Int, Int!, [Int]
@@ -247,19 +248,23 @@ class TypeMapper {
247248 ) ;
248249 }
249250
250- const type =
251- RegexpOutputTypeDefinition . test ( composeType ) || RegexpEnumTypeDefinition . test ( composeType )
252- ? this . createType ( composeType )
253- : this . getWrapped ( composeType ) ;
254-
255- if ( ! type ) {
256- throw new Error (
257- `${ typeName } .${ fieldName } cannot convert to OutputType the following string: '${
258- composeType
259- } '`
260- ) ;
251+ if ( GQC . hasInstance ( composeType , TypeComposer ) ) {
252+ fieldConfig . type = GQC . getTC ( composeType ) . getType ( ) ;
253+ } else {
254+ const type =
255+ RegexpOutputTypeDefinition . test ( composeType ) || RegexpEnumTypeDefinition . test ( composeType )
256+ ? this . createType ( composeType )
257+ : this . getWrapped ( composeType ) ;
258+
259+ if ( ! type ) {
260+ throw new Error (
261+ `${ typeName } .${ fieldName } cannot convert to OutputType the following string: '${
262+ composeType
263+ } '`
264+ ) ;
265+ }
266+ fieldConfig . type = ( type : any ) ;
261267 }
262- fieldConfig . type = ( type : any ) ;
263268 } else if ( composeType instanceof TypeComposer ) {
264269 fieldConfig . type = composeType . getType ( ) ;
265270 } else if ( composeType instanceof Resolver ) {
@@ -378,20 +383,24 @@ class TypeMapper {
378383 ) ;
379384 }
380385
381- const type =
382- RegexpInputTypeDefinition . test ( composeType ) || RegexpEnumTypeDefinition . test ( composeType )
383- ? this . createType ( composeType )
384- : this . getWrapped ( composeType ) ;
386+ if ( GQC . hasInstance ( composeType , InputTypeComposer ) ) {
387+ argConfig . type = GQC . getITC ( composeType ) . getType ( ) ;
388+ } else {
389+ const type =
390+ RegexpInputTypeDefinition . test ( composeType ) || RegexpEnumTypeDefinition . test ( composeType )
391+ ? this . createType ( composeType )
392+ : this . getWrapped ( composeType ) ;
393+
394+ if ( ! type ) {
395+ throw new Error (
396+ `${ typeName } .${ fieldName } @${
397+ argName
398+ } cannot convert to InputType the following string: '${ composeType } '`
399+ ) ;
400+ }
385401
386- if ( ! type ) {
387- throw new Error (
388- `${ typeName } .${ fieldName } @${ argName } cannot convert to InputType the following string: '${
389- composeType
390- } '`
391- ) ;
402+ argConfig . type = ( type : any ) ;
392403 }
393-
394- argConfig . type = ( type : any ) ;
395404 } else if ( composeType instanceof InputTypeComposer ) {
396405 argConfig . type = composeType . getType ( ) ;
397406 } else {
@@ -506,20 +515,24 @@ class TypeMapper {
506515 ) ;
507516 }
508517
509- const type =
510- RegexpInputTypeDefinition . test ( composeType ) || RegexpEnumTypeDefinition . test ( composeType )
511- ? this . createType ( composeType )
512- : this . getWrapped ( composeType ) ;
518+ if ( GQC . hasInstance ( composeType , InputTypeComposer ) ) {
519+ fieldConfig . type = GQC . getITC ( composeType ) . getType ( ) ;
520+ } else {
521+ const type =
522+ RegexpInputTypeDefinition . test ( composeType ) || RegexpEnumTypeDefinition . test ( composeType )
523+ ? this . createType ( composeType )
524+ : this . getWrapped ( composeType ) ;
525+
526+ if ( ! type ) {
527+ throw new Error (
528+ `${ typeName } .${ fieldName } cannot convert to InputType the following string: '${
529+ composeType
530+ } '`
531+ ) ;
532+ }
513533
514- if ( ! type ) {
515- throw new Error (
516- `${ typeName } .${ fieldName } cannot convert to InputType the following string: '${
517- composeType
518- } '`
519- ) ;
534+ fieldConfig . type = ( type : any ) ;
520535 }
521-
522- fieldConfig . type = ( type : any ) ;
523536 } else if ( composeType instanceof InputTypeComposer ) {
524537 fieldConfig . type = composeType . getType ( ) ;
525538 } else {
0 commit comments