@graphql-codegen/visitor-plugin-common 6.0.0-alpha-20250702094259-330e4c0c023358d9861caa216bc6e850fd799b01 → 6.0.0-alpha-20250803142056-2efa9463e1354b219fc39a96449dc43bc630d692

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -96,12 +96,8 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
96
96
  shouldInclude: namedType => !(0, graphql_1.isEnumType)(namedType),
97
97
  onNotMappedObjectType: ({ typeName, initialType }) => {
98
98
  let result = initialType;
99
- const federationReferenceTypes = this._federation.printReferenceSelectionSets({
100
- typeName,
101
- baseFederationType: `${this.convertName('FederationTypes')}['${typeName}']`,
102
- });
103
- if (federationReferenceTypes) {
104
- result += ` | ${federationReferenceTypes}`;
99
+ if (this._federation.getMeta()[typeName]?.referenceSelectionSetsString) {
100
+ result += ` | ${this.convertName('FederationReferenceTypes')}['${typeName}']`;
105
101
  }
106
102
  return result;
107
103
  },
@@ -474,6 +470,27 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
474
470
  })
475
471
  .join('\n')).string;
476
472
  }
473
+ buildFederationReferenceTypes() {
474
+ const federationMeta = this._federation.getMeta();
475
+ if (Object.keys(federationMeta).length === 0) {
476
+ return '';
477
+ }
478
+ const declarationKind = 'type';
479
+ return new utils_js_1.DeclarationBlock(this._declarationBlockConfig)
480
+ .export()
481
+ .asKind(declarationKind)
482
+ .withName(this.convertName('FederationReferenceTypes'))
483
+ .withComment('Mapping of federation reference types')
484
+ .withBlock(Object.entries(federationMeta)
485
+ .map(([typeName, { referenceSelectionSetsString }]) => {
486
+ if (!referenceSelectionSetsString) {
487
+ return undefined;
488
+ }
489
+ return (0, utils_js_1.indent)(`${typeName}: ${referenceSelectionSetsString}${this.getPunctuation(declarationKind)}`);
490
+ })
491
+ .filter(v => v)
492
+ .join('\n')).string;
493
+ }
477
494
  get schema() {
478
495
  return this._schema;
479
496
  }
@@ -603,12 +620,6 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
603
620
  }
604
621
  return '';
605
622
  }
606
- // FIXME: this Name method causes a lot of type inconsistencies
607
- // because the type of nodes no longer matches the `graphql-js` types
608
- // So, we should update this and remove any relevant `as any as string` or `as unknown as string`
609
- Name(node) {
610
- return node.value;
611
- }
612
623
  ListType(node) {
613
624
  const asString = node.type;
614
625
  return this.wrapWithArray(asString);
@@ -617,7 +628,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
617
628
  return `${this.config.namespacedImportName ? this.config.namespacedImportName + '.' : ''}Scalars['${name}']['output']`;
618
629
  }
619
630
  NamedType(node) {
620
- const nameStr = node.name;
631
+ const nameStr = node.name.value;
621
632
  if (this.config.scalars[nameStr]) {
622
633
  return this._getScalar(nameStr);
623
634
  }
@@ -651,10 +662,10 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
651
662
  return {
652
663
  node: original,
653
664
  printContent: (parentNode, avoidResolverOptionals) => {
654
- const parentName = parentNode.name;
665
+ const parentName = parentNode.name.value;
655
666
  const parentType = this.schema.getType(parentName);
656
667
  const meta = {};
657
- const typeName = node.name;
668
+ const typeName = node.name.value;
658
669
  const fieldsToGenerate = this._federation.findFieldNodesToGenerate({ node: parentNode });
659
670
  const shouldGenerateField = fieldsToGenerate.some(field => field.name.value === typeName) ||
660
671
  this._federation.isResolveReferenceField(node);
@@ -683,12 +694,6 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
683
694
  argsType = this.applyOptionalFields(argsType, original.arguments);
684
695
  }
685
696
  }
686
- const parentTypeSignature = this._federation.transformFieldParentType({
687
- fieldNode: original,
688
- parentType,
689
- parentTypeSignature: this.getParentTypeForSignature(node),
690
- federationTypeSignature: 'FederationType',
691
- });
692
697
  const { mappedTypeKey, resolverType } = (() => {
693
698
  const baseType = (0, utils_js_1.getBaseTypeNode)(original.type);
694
699
  const realType = baseType.name.value;
@@ -710,7 +715,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
710
715
  };
711
716
  }
712
717
  const directiveMappings = node.directives
713
- ?.map(directive => this._directiveResolverMappings[directive.name])
718
+ ?.map(directive => this._directiveResolverMappings[directive.name.value])
714
719
  .filter(Boolean)
715
720
  .reverse() ?? [];
716
721
  return {
@@ -722,14 +727,16 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
722
727
  name: typeName,
723
728
  modifier: avoidResolverOptionals ? '' : '?',
724
729
  type: resolverType,
725
- genericTypes: [mappedTypeKey, parentTypeSignature, contextType, argsType].filter(f => f),
730
+ genericTypes: [mappedTypeKey, this.getParentTypeForSignature(node), contextType, argsType].filter(f => f),
726
731
  };
727
732
  if (this._federation.isResolveReferenceField(node)) {
728
733
  if (!this._federation.getMeta()[parentType.name].hasResolveReference) {
729
734
  return { value: '', meta };
730
735
  }
736
+ const resultType = `${mappedTypeKey} | FederationReferenceType`;
737
+ const referenceType = 'FederationReferenceType';
731
738
  signature.type = 'ReferenceResolver';
732
- signature.genericTypes = [mappedTypeKey, parentTypeSignature, contextType];
739
+ signature.genericTypes = [resultType, referenceType, contextType];
733
740
  meta.federation = { isResolveReference: true };
734
741
  }
735
742
  return {
@@ -740,15 +747,15 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
740
747
  };
741
748
  }
742
749
  getFieldContextType(parentName, node) {
743
- if (this._fieldContextTypeMap[`${parentName}.${node.name}`]) {
744
- return this._fieldContextTypeMap[`${parentName}.${node.name}`].type;
750
+ if (this._fieldContextTypeMap[`${parentName}.${node.name.value}`]) {
751
+ return this._fieldContextTypeMap[`${parentName}.${node.name.value}`].type;
745
752
  }
746
753
  return 'ContextType';
747
754
  }
748
755
  getContextType(parentName, node) {
749
756
  let contextType = this.getFieldContextType(parentName, node);
750
757
  for (const directive of node.directives) {
751
- const name = directive.name;
758
+ const name = directive.name.value;
752
759
  const directiveMap = this._directiveContextTypesMap[name];
753
760
  if (directiveMap) {
754
761
  contextType = `${directiveMap.type}<${contextType}>`;
@@ -797,7 +804,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
797
804
  return `Partial<${argsType}>`;
798
805
  }
799
806
  ObjectTypeDefinition(node) {
800
- const typeName = node.name;
807
+ const typeName = node.name.value;
801
808
  const fieldsToGenerate = this._federation.findFieldNodesToGenerate({ node });
802
809
  if (fieldsToGenerate.length === 0) {
803
810
  return null;
@@ -839,7 +846,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
839
846
  ];
840
847
  this._federation.addFederationTypeGenericIfApplicable({
841
848
  genericTypes,
842
- federationTypesType: this.convertName('FederationTypes'),
849
+ federationTypesType: this.convertName('FederationReferenceTypes'),
843
850
  typeName,
844
851
  });
845
852
  const block = new utils_js_1.DeclarationBlock(this._declarationBlockConfig)
@@ -847,7 +854,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
847
854
  .asKind(declarationKind)
848
855
  .withName(name, `<${genericTypes.join(', ')}>`)
849
856
  .withBlock(fieldsContent.join('\n'));
850
- this._collectedResolvers[node.name] = {
857
+ this._collectedResolvers[node.name.value] = {
851
858
  typename: name + '<ContextType>',
852
859
  baseGeneratedTypename: name,
853
860
  };
@@ -863,11 +870,11 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
863
870
  .map(node => node.name.value)
864
871
  .map(f => `'${f}'`)
865
872
  .join(' | ');
866
- this._collectedResolvers[node.name] = {
873
+ this._collectedResolvers[node.name.value] = {
867
874
  typename: name + '<ContextType>',
868
875
  baseGeneratedTypename: name,
869
876
  };
870
- const parentType = this.getParentTypeToUse(node.name);
877
+ const parentType = this.getParentTypeToUse(node.name.value);
871
878
  return new utils_js_1.DeclarationBlock(this._declarationBlockConfig)
872
879
  .export()
873
880
  .asKind(declarationKind)
@@ -875,13 +882,13 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
875
882
  .withBlock((0, utils_js_1.indent)(`${this.config.internalResolversPrefix}resolveType${this.config.optionalResolveType ? '?' : ''}: TypeResolveFn<${possibleTypes}, ParentType, ContextType>${this.getPunctuation(declarationKind)}`)).string;
876
883
  }
877
884
  ScalarTypeDefinition(node) {
878
- const nameAsString = node.name;
885
+ const nameAsString = node.name.value;
879
886
  const baseName = this.getTypeToUse(nameAsString);
880
887
  if (this._federation.skipScalar(nameAsString)) {
881
888
  return null;
882
889
  }
883
890
  this._hasScalars = true;
884
- this._collectedResolvers[node.name] = {
891
+ this._collectedResolvers[node.name.value] = {
885
892
  typename: 'GraphQLScalarType',
886
893
  };
887
894
  return new utils_js_1.DeclarationBlock({
@@ -895,10 +902,10 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
895
902
  .withName(this.convertName(node, {
896
903
  suffix: 'ScalarConfig',
897
904
  }), ` extends GraphQLScalarTypeConfig<${baseName}, any>`)
898
- .withBlock((0, utils_js_1.indent)(`name: '${node.name}'${this.getPunctuation('interface')}`)).string;
905
+ .withBlock((0, utils_js_1.indent)(`name: '${node.name.value}'${this.getPunctuation('interface')}`)).string;
899
906
  }
900
907
  DirectiveDefinition(node, key, parent) {
901
- if (this._federation.skipDirective(node.name)) {
908
+ if (this._federation.skipDirective(node.name.value)) {
902
909
  return null;
903
910
  }
904
911
  const directiveName = this.convertName(node, {
@@ -906,7 +913,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
906
913
  });
907
914
  const sourceNode = parent[key];
908
915
  const hasArguments = sourceNode.arguments && sourceNode.arguments.length > 0;
909
- this._collectedDirectiveResolvers[node.name] = directiveName + '<any, any, ContextType>';
916
+ this._collectedDirectiveResolvers[node.name.value] = directiveName + '<any, any, ContextType>';
910
917
  const directiveArgsTypeName = this.convertName(node, {
911
918
  suffix: 'DirectiveArgs',
912
919
  });
@@ -942,7 +949,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
942
949
  throw new Error(`buildEnumResolversExplicitMappedValues is not implemented!`);
943
950
  }
944
951
  EnumTypeDefinition(node) {
945
- const rawTypeName = node.name;
952
+ const rawTypeName = node.name.value;
946
953
  // If we have enumValues set, and it's point to an external enum - we need to allow internal values resolvers
947
954
  // In case we have enumValues set but as explicit values, no need to to do mapping since it's already
948
955
  // have type validation (the original enum has been modified by base types plugin).
@@ -969,7 +976,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
969
976
  suffix: this.config.resolverTypeSuffix,
970
977
  });
971
978
  const declarationKind = 'type';
972
- const typeName = node.name;
979
+ const typeName = node.name.value;
973
980
  const implementingTypes = Object.keys(this._parsedSchemaMeta.types.interface[typeName].implementingTypes);
974
981
  this._collectedResolvers[typeName] = {
975
982
  typename: name + '<ContextType>',
@@ -982,7 +989,7 @@ class BaseResolversVisitor extends base_visitor_js_1.BaseVisitor {
982
989
  ];
983
990
  this._federation.addFederationTypeGenericIfApplicable({
984
991
  genericTypes,
985
- federationTypesType: this.convertName('FederationTypes'),
992
+ federationTypesType: this.convertName('FederationReferenceTypes'),
986
993
  typeName,
987
994
  });
988
995
  const possibleTypes = implementingTypes.map(name => `'${name}'`).join(' | ') || 'null';
@@ -92,12 +92,8 @@ export class BaseResolversVisitor extends BaseVisitor {
92
92
  shouldInclude: namedType => !isEnumType(namedType),
93
93
  onNotMappedObjectType: ({ typeName, initialType }) => {
94
94
  let result = initialType;
95
- const federationReferenceTypes = this._federation.printReferenceSelectionSets({
96
- typeName,
97
- baseFederationType: `${this.convertName('FederationTypes')}['${typeName}']`,
98
- });
99
- if (federationReferenceTypes) {
100
- result += ` | ${federationReferenceTypes}`;
95
+ if (this._federation.getMeta()[typeName]?.referenceSelectionSetsString) {
96
+ result += ` | ${this.convertName('FederationReferenceTypes')}['${typeName}']`;
101
97
  }
102
98
  return result;
103
99
  },
@@ -470,6 +466,27 @@ export class BaseResolversVisitor extends BaseVisitor {
470
466
  })
471
467
  .join('\n')).string;
472
468
  }
469
+ buildFederationReferenceTypes() {
470
+ const federationMeta = this._federation.getMeta();
471
+ if (Object.keys(federationMeta).length === 0) {
472
+ return '';
473
+ }
474
+ const declarationKind = 'type';
475
+ return new DeclarationBlock(this._declarationBlockConfig)
476
+ .export()
477
+ .asKind(declarationKind)
478
+ .withName(this.convertName('FederationReferenceTypes'))
479
+ .withComment('Mapping of federation reference types')
480
+ .withBlock(Object.entries(federationMeta)
481
+ .map(([typeName, { referenceSelectionSetsString }]) => {
482
+ if (!referenceSelectionSetsString) {
483
+ return undefined;
484
+ }
485
+ return indent(`${typeName}: ${referenceSelectionSetsString}${this.getPunctuation(declarationKind)}`);
486
+ })
487
+ .filter(v => v)
488
+ .join('\n')).string;
489
+ }
473
490
  get schema() {
474
491
  return this._schema;
475
492
  }
@@ -599,12 +616,6 @@ export class BaseResolversVisitor extends BaseVisitor {
599
616
  }
600
617
  return '';
601
618
  }
602
- // FIXME: this Name method causes a lot of type inconsistencies
603
- // because the type of nodes no longer matches the `graphql-js` types
604
- // So, we should update this and remove any relevant `as any as string` or `as unknown as string`
605
- Name(node) {
606
- return node.value;
607
- }
608
619
  ListType(node) {
609
620
  const asString = node.type;
610
621
  return this.wrapWithArray(asString);
@@ -613,7 +624,7 @@ export class BaseResolversVisitor extends BaseVisitor {
613
624
  return `${this.config.namespacedImportName ? this.config.namespacedImportName + '.' : ''}Scalars['${name}']['output']`;
614
625
  }
615
626
  NamedType(node) {
616
- const nameStr = node.name;
627
+ const nameStr = node.name.value;
617
628
  if (this.config.scalars[nameStr]) {
618
629
  return this._getScalar(nameStr);
619
630
  }
@@ -647,10 +658,10 @@ export class BaseResolversVisitor extends BaseVisitor {
647
658
  return {
648
659
  node: original,
649
660
  printContent: (parentNode, avoidResolverOptionals) => {
650
- const parentName = parentNode.name;
661
+ const parentName = parentNode.name.value;
651
662
  const parentType = this.schema.getType(parentName);
652
663
  const meta = {};
653
- const typeName = node.name;
664
+ const typeName = node.name.value;
654
665
  const fieldsToGenerate = this._federation.findFieldNodesToGenerate({ node: parentNode });
655
666
  const shouldGenerateField = fieldsToGenerate.some(field => field.name.value === typeName) ||
656
667
  this._federation.isResolveReferenceField(node);
@@ -679,12 +690,6 @@ export class BaseResolversVisitor extends BaseVisitor {
679
690
  argsType = this.applyOptionalFields(argsType, original.arguments);
680
691
  }
681
692
  }
682
- const parentTypeSignature = this._federation.transformFieldParentType({
683
- fieldNode: original,
684
- parentType,
685
- parentTypeSignature: this.getParentTypeForSignature(node),
686
- federationTypeSignature: 'FederationType',
687
- });
688
693
  const { mappedTypeKey, resolverType } = (() => {
689
694
  const baseType = getBaseTypeNode(original.type);
690
695
  const realType = baseType.name.value;
@@ -706,7 +711,7 @@ export class BaseResolversVisitor extends BaseVisitor {
706
711
  };
707
712
  }
708
713
  const directiveMappings = node.directives
709
- ?.map(directive => this._directiveResolverMappings[directive.name])
714
+ ?.map(directive => this._directiveResolverMappings[directive.name.value])
710
715
  .filter(Boolean)
711
716
  .reverse() ?? [];
712
717
  return {
@@ -718,14 +723,16 @@ export class BaseResolversVisitor extends BaseVisitor {
718
723
  name: typeName,
719
724
  modifier: avoidResolverOptionals ? '' : '?',
720
725
  type: resolverType,
721
- genericTypes: [mappedTypeKey, parentTypeSignature, contextType, argsType].filter(f => f),
726
+ genericTypes: [mappedTypeKey, this.getParentTypeForSignature(node), contextType, argsType].filter(f => f),
722
727
  };
723
728
  if (this._federation.isResolveReferenceField(node)) {
724
729
  if (!this._federation.getMeta()[parentType.name].hasResolveReference) {
725
730
  return { value: '', meta };
726
731
  }
732
+ const resultType = `${mappedTypeKey} | FederationReferenceType`;
733
+ const referenceType = 'FederationReferenceType';
727
734
  signature.type = 'ReferenceResolver';
728
- signature.genericTypes = [mappedTypeKey, parentTypeSignature, contextType];
735
+ signature.genericTypes = [resultType, referenceType, contextType];
729
736
  meta.federation = { isResolveReference: true };
730
737
  }
731
738
  return {
@@ -736,15 +743,15 @@ export class BaseResolversVisitor extends BaseVisitor {
736
743
  };
737
744
  }
738
745
  getFieldContextType(parentName, node) {
739
- if (this._fieldContextTypeMap[`${parentName}.${node.name}`]) {
740
- return this._fieldContextTypeMap[`${parentName}.${node.name}`].type;
746
+ if (this._fieldContextTypeMap[`${parentName}.${node.name.value}`]) {
747
+ return this._fieldContextTypeMap[`${parentName}.${node.name.value}`].type;
741
748
  }
742
749
  return 'ContextType';
743
750
  }
744
751
  getContextType(parentName, node) {
745
752
  let contextType = this.getFieldContextType(parentName, node);
746
753
  for (const directive of node.directives) {
747
- const name = directive.name;
754
+ const name = directive.name.value;
748
755
  const directiveMap = this._directiveContextTypesMap[name];
749
756
  if (directiveMap) {
750
757
  contextType = `${directiveMap.type}<${contextType}>`;
@@ -793,7 +800,7 @@ export class BaseResolversVisitor extends BaseVisitor {
793
800
  return `Partial<${argsType}>`;
794
801
  }
795
802
  ObjectTypeDefinition(node) {
796
- const typeName = node.name;
803
+ const typeName = node.name.value;
797
804
  const fieldsToGenerate = this._federation.findFieldNodesToGenerate({ node });
798
805
  if (fieldsToGenerate.length === 0) {
799
806
  return null;
@@ -835,7 +842,7 @@ export class BaseResolversVisitor extends BaseVisitor {
835
842
  ];
836
843
  this._federation.addFederationTypeGenericIfApplicable({
837
844
  genericTypes,
838
- federationTypesType: this.convertName('FederationTypes'),
845
+ federationTypesType: this.convertName('FederationReferenceTypes'),
839
846
  typeName,
840
847
  });
841
848
  const block = new DeclarationBlock(this._declarationBlockConfig)
@@ -843,7 +850,7 @@ export class BaseResolversVisitor extends BaseVisitor {
843
850
  .asKind(declarationKind)
844
851
  .withName(name, `<${genericTypes.join(', ')}>`)
845
852
  .withBlock(fieldsContent.join('\n'));
846
- this._collectedResolvers[node.name] = {
853
+ this._collectedResolvers[node.name.value] = {
847
854
  typename: name + '<ContextType>',
848
855
  baseGeneratedTypename: name,
849
856
  };
@@ -859,11 +866,11 @@ export class BaseResolversVisitor extends BaseVisitor {
859
866
  .map(node => node.name.value)
860
867
  .map(f => `'${f}'`)
861
868
  .join(' | ');
862
- this._collectedResolvers[node.name] = {
869
+ this._collectedResolvers[node.name.value] = {
863
870
  typename: name + '<ContextType>',
864
871
  baseGeneratedTypename: name,
865
872
  };
866
- const parentType = this.getParentTypeToUse(node.name);
873
+ const parentType = this.getParentTypeToUse(node.name.value);
867
874
  return new DeclarationBlock(this._declarationBlockConfig)
868
875
  .export()
869
876
  .asKind(declarationKind)
@@ -871,13 +878,13 @@ export class BaseResolversVisitor extends BaseVisitor {
871
878
  .withBlock(indent(`${this.config.internalResolversPrefix}resolveType${this.config.optionalResolveType ? '?' : ''}: TypeResolveFn<${possibleTypes}, ParentType, ContextType>${this.getPunctuation(declarationKind)}`)).string;
872
879
  }
873
880
  ScalarTypeDefinition(node) {
874
- const nameAsString = node.name;
881
+ const nameAsString = node.name.value;
875
882
  const baseName = this.getTypeToUse(nameAsString);
876
883
  if (this._federation.skipScalar(nameAsString)) {
877
884
  return null;
878
885
  }
879
886
  this._hasScalars = true;
880
- this._collectedResolvers[node.name] = {
887
+ this._collectedResolvers[node.name.value] = {
881
888
  typename: 'GraphQLScalarType',
882
889
  };
883
890
  return new DeclarationBlock({
@@ -891,10 +898,10 @@ export class BaseResolversVisitor extends BaseVisitor {
891
898
  .withName(this.convertName(node, {
892
899
  suffix: 'ScalarConfig',
893
900
  }), ` extends GraphQLScalarTypeConfig<${baseName}, any>`)
894
- .withBlock(indent(`name: '${node.name}'${this.getPunctuation('interface')}`)).string;
901
+ .withBlock(indent(`name: '${node.name.value}'${this.getPunctuation('interface')}`)).string;
895
902
  }
896
903
  DirectiveDefinition(node, key, parent) {
897
- if (this._federation.skipDirective(node.name)) {
904
+ if (this._federation.skipDirective(node.name.value)) {
898
905
  return null;
899
906
  }
900
907
  const directiveName = this.convertName(node, {
@@ -902,7 +909,7 @@ export class BaseResolversVisitor extends BaseVisitor {
902
909
  });
903
910
  const sourceNode = parent[key];
904
911
  const hasArguments = sourceNode.arguments && sourceNode.arguments.length > 0;
905
- this._collectedDirectiveResolvers[node.name] = directiveName + '<any, any, ContextType>';
912
+ this._collectedDirectiveResolvers[node.name.value] = directiveName + '<any, any, ContextType>';
906
913
  const directiveArgsTypeName = this.convertName(node, {
907
914
  suffix: 'DirectiveArgs',
908
915
  });
@@ -938,7 +945,7 @@ export class BaseResolversVisitor extends BaseVisitor {
938
945
  throw new Error(`buildEnumResolversExplicitMappedValues is not implemented!`);
939
946
  }
940
947
  EnumTypeDefinition(node) {
941
- const rawTypeName = node.name;
948
+ const rawTypeName = node.name.value;
942
949
  // If we have enumValues set, and it's point to an external enum - we need to allow internal values resolvers
943
950
  // In case we have enumValues set but as explicit values, no need to to do mapping since it's already
944
951
  // have type validation (the original enum has been modified by base types plugin).
@@ -965,7 +972,7 @@ export class BaseResolversVisitor extends BaseVisitor {
965
972
  suffix: this.config.resolverTypeSuffix,
966
973
  });
967
974
  const declarationKind = 'type';
968
- const typeName = node.name;
975
+ const typeName = node.name.value;
969
976
  const implementingTypes = Object.keys(this._parsedSchemaMeta.types.interface[typeName].implementingTypes);
970
977
  this._collectedResolvers[typeName] = {
971
978
  typename: name + '<ContextType>',
@@ -978,7 +985,7 @@ export class BaseResolversVisitor extends BaseVisitor {
978
985
  ];
979
986
  this._federation.addFederationTypeGenericIfApplicable({
980
987
  genericTypes,
981
- federationTypesType: this.convertName('FederationTypes'),
988
+ federationTypesType: this.convertName('FederationReferenceTypes'),
982
989
  typeName,
983
990
  });
984
991
  const possibleTypes = implementingTypes.map(name => `'${name}'`).join(' | ') || 'null';
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@graphql-codegen/visitor-plugin-common",
3
- "version": "6.0.0-alpha-20250702094259-330e4c0c023358d9861caa216bc6e850fd799b01",
3
+ "version": "6.0.0-alpha-20250803142056-2efa9463e1354b219fc39a96449dc43bc630d692",
4
4
  "peerDependencies": {
5
5
  "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
6
6
  },
7
7
  "dependencies": {
8
8
  "@graphql-tools/optimize": "^2.0.0",
9
- "@graphql-codegen/plugin-helpers": "6.0.0-alpha-20250702094259-330e4c0c023358d9861caa216bc6e850fd799b01",
9
+ "@graphql-codegen/plugin-helpers": "6.0.0-alpha-20250803142056-2efa9463e1354b219fc39a96449dc43bc630d692",
10
10
  "@graphql-tools/relay-operation-optimizer": "^7.0.0",
11
11
  "@graphql-tools/utils": "^10.0.0",
12
12
  "auto-bind": "~4.0.0",
@@ -1,5 +1,5 @@
1
1
  import { ApolloFederation, type FederationMeta } from '@graphql-codegen/plugin-helpers';
2
- import { ASTNode, DirectiveDefinitionNode, EnumTypeDefinitionNode, FieldDefinitionNode, GraphQLInterfaceType, GraphQLNamedType, GraphQLObjectType, GraphQLSchema, GraphQLUnionType, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NameNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode } from 'graphql';
2
+ import { ASTNode, DirectiveDefinitionNode, EnumTypeDefinitionNode, FieldDefinitionNode, GraphQLInterfaceType, GraphQLNamedType, GraphQLObjectType, GraphQLSchema, GraphQLUnionType, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode } from 'graphql';
3
3
  import { BaseVisitor, BaseVisitorConvertOptions, ParsedConfig, RawConfig } from './base-visitor.cjs';
4
4
  import { ParsedMapper } from './mappers.cjs';
5
5
  import { AvoidOptionalsConfig, ConvertOptions, DeclarationKind, EnumValuesMap, NormalizedAvoidOptionalsConfig, NormalizedScalarsMap, ParsedEnumValuesMap, ResolversNonOptionalTypenameConfig } from './types.cjs';
@@ -737,6 +737,7 @@ export declare class BaseResolversVisitor<TRawConfig extends RawResolversConfig
737
737
  buildResolversUnionTypes(): string;
738
738
  buildResolversInterfaceTypes(): string;
739
739
  buildFederationTypes(): string;
740
+ buildFederationReferenceTypes(): string;
740
741
  get schema(): GraphQLSchema;
741
742
  get defaultMapperType(): string;
742
743
  get unusedMappers(): string[];
@@ -750,7 +751,6 @@ export declare class BaseResolversVisitor<TRawConfig extends RawResolversConfig
750
751
  getRootResolver(): RootResolver;
751
752
  protected formatRootResolver(schemaTypeName: string, resolverType: string, declarationKind: DeclarationKind): string;
752
753
  getAllDirectiveResolvers(): string;
753
- Name(node: NameNode): string;
754
754
  ListType(node: ListTypeNode): string;
755
755
  protected _getScalar(name: string): string;
756
756
  NamedType(node: NamedTypeNode): string;
@@ -1,5 +1,5 @@
1
1
  import { ApolloFederation, type FederationMeta } from '@graphql-codegen/plugin-helpers';
2
- import { ASTNode, DirectiveDefinitionNode, EnumTypeDefinitionNode, FieldDefinitionNode, GraphQLInterfaceType, GraphQLNamedType, GraphQLObjectType, GraphQLSchema, GraphQLUnionType, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NameNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode } from 'graphql';
2
+ import { ASTNode, DirectiveDefinitionNode, EnumTypeDefinitionNode, FieldDefinitionNode, GraphQLInterfaceType, GraphQLNamedType, GraphQLObjectType, GraphQLSchema, GraphQLUnionType, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode } from 'graphql';
3
3
  import { BaseVisitor, BaseVisitorConvertOptions, ParsedConfig, RawConfig } from './base-visitor.js';
4
4
  import { ParsedMapper } from './mappers.js';
5
5
  import { AvoidOptionalsConfig, ConvertOptions, DeclarationKind, EnumValuesMap, NormalizedAvoidOptionalsConfig, NormalizedScalarsMap, ParsedEnumValuesMap, ResolversNonOptionalTypenameConfig } from './types.js';
@@ -737,6 +737,7 @@ export declare class BaseResolversVisitor<TRawConfig extends RawResolversConfig
737
737
  buildResolversUnionTypes(): string;
738
738
  buildResolversInterfaceTypes(): string;
739
739
  buildFederationTypes(): string;
740
+ buildFederationReferenceTypes(): string;
740
741
  get schema(): GraphQLSchema;
741
742
  get defaultMapperType(): string;
742
743
  get unusedMappers(): string[];
@@ -750,7 +751,6 @@ export declare class BaseResolversVisitor<TRawConfig extends RawResolversConfig
750
751
  getRootResolver(): RootResolver;
751
752
  protected formatRootResolver(schemaTypeName: string, resolverType: string, declarationKind: DeclarationKind): string;
752
753
  getAllDirectiveResolvers(): string;
753
- Name(node: NameNode): string;
754
754
  ListType(node: ListTypeNode): string;
755
755
  protected _getScalar(name: string): string;
756
756
  NamedType(node: NamedTypeNode): string;