@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
|
-
|
|
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,
|
|
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 = [
|
|
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('
|
|
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('
|
|
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
|
-
|
|
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,
|
|
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 = [
|
|
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('
|
|
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('
|
|
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-
|
|
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-
|
|
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,
|
|
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,
|
|
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;
|