@@ -13,59 +13,63 @@ import { getNodeFieldConfig } from './nodeFieldConfig';
1313export const TypeMapForRelayNode = { } ;
1414export const nodeFieldConfig = getNodeFieldConfig ( TypeMapForRelayNode ) ;
1515
16- export function composeWithRelay ( typeComposer : TypeComposer ) : TypeComposer {
17- if ( ! typeComposer || typeComposer . constructor . name !== 'TypeComposer' ) {
16+ export function composeWithRelay < T > ( typeComposer : T ) : T {
17+ return ( _composeWithRelay ( ( typeComposer : any ) ) : any ) ;
18+ }
19+
20+ export function _composeWithRelay ( tc : TypeComposer ) : TypeComposer {
21+ if ( ! tc || tc . constructor . name !== 'TypeComposer' ) {
1822 throw new Error ( 'You should provide TypeComposer instance to composeWithRelay method' ) ;
1923 }
2024
21- if ( typeComposer . getTypeName ( ) === 'Query' || typeComposer . getTypeName ( ) === 'RootQuery' ) {
22- typeComposer . setField ( 'node' , nodeFieldConfig ) ;
23- return typeComposer ;
25+ if ( tc . getTypeName ( ) === 'Query' || tc . getTypeName ( ) === 'RootQuery' ) {
26+ tc . setField ( 'node' , nodeFieldConfig ) ;
27+ return tc ;
2428 }
2529
26- if ( typeComposer . getTypeName ( ) === 'Mutation' || typeComposer . getTypeName ( ) === 'RootMutation' ) {
30+ if ( tc . getTypeName ( ) === 'Mutation' || tc . getTypeName ( ) === 'RootMutation' ) {
2731 // just skip
28- return typeComposer ;
32+ return tc ;
2933 }
3034
31- if ( ! typeComposer . hasRecordIdFn ( ) ) {
35+ if ( ! tc . hasRecordIdFn ( ) ) {
3236 throw new Error (
33- `TypeComposer(${ typeComposer . getTypeName ( ) } ) should have recordIdFn. ` +
37+ `TypeComposer(${ tc . getTypeName ( ) } ) should have recordIdFn. ` +
3438 'This function returns ID from provided object.'
3539 ) ;
3640 }
3741
38- const findById = typeComposer . getResolver ( 'findById' ) ;
42+ const findById = tc . getResolver ( 'findById' ) ;
3943 if ( ! findById ) {
4044 throw new Error (
41- `TypeComposer(${ typeComposer . getTypeName ( ) } ) provided to composeWithRelay ` +
45+ `TypeComposer(${ tc . getTypeName ( ) } ) provided to composeWithRelay ` +
4246 'should have findById resolver.'
4347 ) ;
4448 }
45- TypeMapForRelayNode [ typeComposer . getTypeName ( ) ] = {
49+ TypeMapForRelayNode [ tc . getTypeName ( ) ] = {
4650 resolver : findById ,
47- tc : typeComposer ,
51+ tc,
4852 } ;
4953
50- typeComposer . addFields ( {
54+ tc . addFields ( {
5155 id : {
5256 type : new GraphQLNonNull ( GraphQLID ) ,
5357 description : 'The globally unique ID among all types' ,
54- resolve : source => toGlobalId ( typeComposer . getTypeName ( ) , typeComposer . getRecordId ( source ) ) ,
58+ resolve : source => toGlobalId ( tc . getTypeName ( ) , tc . getRecordId ( source ) ) ,
5559 } ,
5660 } ) ;
5761
58- typeComposer . addInterface ( NodeInterface ) ;
62+ tc . addInterface ( NodeInterface ) ;
5963
60- typeComposer . getResolvers ( ) . forEach ( ( resolver , resolverName ) => {
64+ tc . getResolvers ( ) . forEach ( ( resolver , resolverName ) => {
6165 if ( resolver . kind === 'mutation' ) {
6266 const wrappedResolver = wrapMutationResolver ( resolver , {
6367 resolverName,
64- rootTypeName : typeComposer . getTypeName ( ) ,
68+ rootTypeName : tc . getTypeName ( ) ,
6569 } ) ;
66- typeComposer . setResolver ( resolverName , wrappedResolver ) ;
70+ tc . setResolver ( resolverName , wrappedResolver ) ;
6771 }
6872 } ) ;
6973
70- return typeComposer ;
74+ return tc ;
7175}
0 commit comments