@graphql-codegen/visitor-plugin-common 6.2.1 → 6.2.2-alpha-20251208213708-5cec49371ae1dc4b89042b24043f64a040812d15
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.
|
@@ -686,14 +686,14 @@ class SelectionSetToObject {
|
|
|
686
686
|
if (operationTypes.includes(typeName)) {
|
|
687
687
|
return parentName;
|
|
688
688
|
}
|
|
689
|
-
// When the parent schema type is an interface, use the interface name instead of the concrete type
|
|
690
|
-
// BUT only if we're not inside a fragment (fragments explicitly target specific types)
|
|
691
689
|
const schemaType = this._schema.getType(typeName);
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
690
|
+
// Check if current selection set has fragments (e.g., "... AppNotificationFragment" or "... on AppNotification")
|
|
691
|
+
const hasFragment = this._selectionSet?.selections?.some(selection => selection.kind === graphql_1.Kind.INLINE_FRAGMENT || selection.kind === graphql_1.Kind.FRAGMENT_SPREAD) ?? false;
|
|
692
|
+
// When the parent schema type is an interface:
|
|
693
|
+
// - If we're processing inline fragments, use the concrete type name
|
|
694
|
+
// - If we're processing the interface directly, use the interface name
|
|
695
|
+
// - If we're in a named fragment, always use the concrete type name
|
|
696
|
+
if ((0, graphql_1.isObjectType)(schemaType) && this._parentSchemaType && (0, graphql_1.isInterfaceType)(this._parentSchemaType) && !hasFragment) {
|
|
697
697
|
return `${parentName}_${this._parentSchemaType.name}`;
|
|
698
698
|
}
|
|
699
699
|
return `${parentName}_${typeName}`;
|
|
@@ -682,14 +682,14 @@ export class SelectionSetToObject {
|
|
|
682
682
|
if (operationTypes.includes(typeName)) {
|
|
683
683
|
return parentName;
|
|
684
684
|
}
|
|
685
|
-
// When the parent schema type is an interface, use the interface name instead of the concrete type
|
|
686
|
-
// BUT only if we're not inside a fragment (fragments explicitly target specific types)
|
|
687
685
|
const schemaType = this._schema.getType(typeName);
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
686
|
+
// Check if current selection set has fragments (e.g., "... AppNotificationFragment" or "... on AppNotification")
|
|
687
|
+
const hasFragment = this._selectionSet?.selections?.some(selection => selection.kind === Kind.INLINE_FRAGMENT || selection.kind === Kind.FRAGMENT_SPREAD) ?? false;
|
|
688
|
+
// When the parent schema type is an interface:
|
|
689
|
+
// - If we're processing inline fragments, use the concrete type name
|
|
690
|
+
// - If we're processing the interface directly, use the interface name
|
|
691
|
+
// - If we're in a named fragment, always use the concrete type name
|
|
692
|
+
if (isObjectType(schemaType) && this._parentSchemaType && isInterfaceType(this._parentSchemaType) && !hasFragment) {
|
|
693
693
|
return `${parentName}_${this._parentSchemaType.name}`;
|
|
694
694
|
}
|
|
695
695
|
return `${parentName}_${typeName}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-codegen/visitor-plugin-common",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.2-alpha-20251208213708-5cec49371ae1dc4b89042b24043f64a040812d15",
|
|
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
|
},
|