@@ -9,17 +9,31 @@ import { ObjectValueTransformerMap, ErrorsTransformer } from '../types';
99import TransformCompositeFields from './TransformCompositeFields' ;
1010
1111export default class MapFields implements Transform {
12- private readonly transformer : TransformCompositeFields ;
12+ private fieldNodeTransformerMap : FieldNodeMappers ;
13+ private objectValueTransformerMap ?: ObjectValueTransformerMap ;
14+ private errorsTransformer ?: ErrorsTransformer ;
15+ private transformer : TransformCompositeFields ;
1316
1417 constructor (
1518 fieldNodeTransformerMap : FieldNodeMappers ,
1619 objectValueTransformerMap ?: ObjectValueTransformerMap ,
1720 errorsTransformer ?: ErrorsTransformer
1821 ) {
22+ this . fieldNodeTransformerMap = fieldNodeTransformerMap ;
23+ this . objectValueTransformerMap = objectValueTransformerMap ;
24+ this . errorsTransformer = errorsTransformer ;
25+ }
26+
27+ public transformSchema (
28+ originalWrappingSchema : GraphQLSchema ,
29+ subschemaConfig : SubschemaConfig ,
30+ transformedSchema ?: GraphQLSchema
31+ ) : GraphQLSchema {
32+ const subscriptionTypeName = originalWrappingSchema . getSubscriptionType ( ) ?. name ;
1933 this . transformer = new TransformCompositeFields (
2034 ( ) => undefined ,
2135 ( typeName , fieldName , fieldNode , fragments , transformationContext ) => {
22- const typeTransformers = fieldNodeTransformerMap [ typeName ] ;
36+ const typeTransformers = this . fieldNodeTransformerMap [ typeName ] ;
2337 if ( typeTransformers == null ) {
2438 return undefined ;
2539 }
@@ -31,34 +45,31 @@ export default class MapFields implements Transform {
3145
3246 return fieldNodeTransformer ( fieldNode , fragments , transformationContext ) ;
3347 } ,
34- objectValueTransformerMap != null
48+ this . objectValueTransformerMap != null
3549 ? ( data , transformationContext ) => {
3650 if ( data == null ) {
3751 return data ;
3852 }
3953
40- const typeName = data . __typename ;
54+ let typeName = data . __typename ;
4155 if ( typeName == null ) {
42- return data ;
56+ // see https://github.com/ardatan/graphql-tools/issues/2282
57+ typeName = subscriptionTypeName ;
58+ if ( typeName == null ) {
59+ return data ;
60+ }
4361 }
4462
45- const transformer = objectValueTransformerMap [ typeName ] ;
63+ const transformer = this . objectValueTransformerMap [ typeName ] ;
4664 if ( transformer == null ) {
4765 return data ;
4866 }
4967
5068 return transformer ( data , transformationContext ) ;
5169 }
5270 : undefined ,
53- errorsTransformer != null ? errorsTransformer : undefined
71+ this . errorsTransformer != null ? this . errorsTransformer : undefined
5472 ) ;
55- }
56-
57- public transformSchema (
58- originalWrappingSchema : GraphQLSchema ,
59- subschemaConfig : SubschemaConfig ,
60- transformedSchema ?: GraphQLSchema
61- ) : GraphQLSchema {
6273 return this . transformer . transformSchema ( originalWrappingSchema , subschemaConfig , transformedSchema ) ;
6374 }
6475
0 commit comments