@graphql-codegen/visitor-plugin-common 6.2.1 → 6.2.2-alpha-20251208101827-e43ab73e4201f13f8df28eacf0c3fe4a7300f3e8

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
- const isInFragment = parentName.includes('Fragment');
693
- if ((0, graphql_1.isObjectType)(schemaType) &&
694
- this._parentSchemaType &&
695
- (0, graphql_1.isInterfaceType)(this._parentSchemaType) &&
696
- !isInFragment) {
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
- const isInFragment = parentName.includes('Fragment');
689
- if (isObjectType(schemaType) &&
690
- this._parentSchemaType &&
691
- isInterfaceType(this._parentSchemaType) &&
692
- !isInFragment) {
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.1",
3
+ "version": "6.2.2-alpha-20251208101827-e43ab73e4201f13f8df28eacf0c3fe4a7300f3e8",
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
  },