@wundergraph/composition 0.18.4 → 0.18.5

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.
Files changed (54) hide show
  1. package/dist/ast/utils.d.ts +2 -9
  2. package/dist/ast/utils.js +2 -73
  3. package/dist/ast/utils.js.map +1 -1
  4. package/dist/errors/errors.d.ts +13 -19
  5. package/dist/errors/errors.js +50 -67
  6. package/dist/errors/errors.js.map +1 -1
  7. package/dist/federation/federation-factory.d.ts +17 -46
  8. package/dist/federation/federation-factory.js +391 -1002
  9. package/dist/federation/federation-factory.js.map +1 -1
  10. package/dist/federation/utils.d.ts +1 -115
  11. package/dist/federation/utils.js +0 -29
  12. package/dist/federation/utils.js.map +1 -1
  13. package/dist/federation/walkers.d.ts +3 -0
  14. package/dist/federation/walkers.js +120 -0
  15. package/dist/federation/walkers.js.map +1 -0
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/normalization/normalization-factory.d.ts +26 -18
  20. package/dist/normalization/normalization-factory.js +139 -141
  21. package/dist/normalization/normalization-factory.js.map +1 -1
  22. package/dist/normalization/utils.js +53 -54
  23. package/dist/normalization/utils.js.map +1 -1
  24. package/dist/normalization/walkers.js +156 -128
  25. package/dist/normalization/walkers.js.map +1 -1
  26. package/dist/router-configuration/router-configuration.d.ts +0 -1
  27. package/dist/schema-building/ast.d.ts +17 -5
  28. package/dist/schema-building/ast.js +32 -17
  29. package/dist/schema-building/ast.js.map +1 -1
  30. package/dist/schema-building/type-definition-data.d.ts +51 -25
  31. package/dist/schema-building/type-extension-data.d.ts +11 -7
  32. package/dist/schema-building/type-merging.d.ts +2 -4
  33. package/dist/schema-building/type-merging.js +8 -27
  34. package/dist/schema-building/type-merging.js.map +1 -1
  35. package/dist/schema-building/utils.d.ts +41 -18
  36. package/dist/schema-building/utils.js +855 -111
  37. package/dist/schema-building/utils.js.map +1 -1
  38. package/dist/subgraph/subgraph.d.ts +8 -10
  39. package/dist/subgraph/subgraph.js +1 -237
  40. package/dist/subgraph/subgraph.js.map +1 -1
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/dist/utils/constants.d.ts +7 -1
  43. package/dist/utils/constants.js +24 -19
  44. package/dist/utils/constants.js.map +1 -1
  45. package/dist/utils/string-constants.d.ts +10 -4
  46. package/dist/utils/string-constants.js +20 -6
  47. package/dist/utils/string-constants.js.map +1 -1
  48. package/dist/utils/utils.d.ts +4 -4
  49. package/dist/utils/utils.js +10 -4
  50. package/dist/utils/utils.js.map +1 -1
  51. package/package.json +4 -3
  52. package/dist/ast/ast.d.ts +0 -97
  53. package/dist/ast/ast.js +0 -168
  54. package/dist/ast/ast.js.map +0 -1
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.consolidateAuthorizationDirectives = exports.upsertParentsAndChildren = exports.upsertDirectiveAndSchemaDefinitions = void 0;
4
4
  const graphql_1 = require("graphql");
5
- const type_merging_1 = require("../schema-building/type-merging");
6
5
  const errors_1 = require("../errors/errors");
7
6
  const constants_1 = require("../utils/constants");
8
7
  const utils_1 = require("../utils/utils");
@@ -10,11 +9,25 @@ const utils_2 = require("../ast/utils");
10
9
  const utils_3 = require("./utils");
11
10
  const string_constants_1 = require("../utils/string-constants");
12
11
  const utils_4 = require("../schema-building/utils");
12
+ const ast_1 = require("../schema-building/ast");
13
13
  // Walker to collect schema definition and directive definitions
14
14
  function upsertDirectiveAndSchemaDefinitions(nf, document) {
15
15
  const definedDirectives = new Set();
16
16
  const schemaNodes = [];
17
17
  (0, graphql_1.visit)(document, {
18
+ Directive: {
19
+ enter(node) {
20
+ const name = node.name.value;
21
+ if (constants_1.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.has(name)) {
22
+ nf.isSubgraphVersionTwo = true;
23
+ return false;
24
+ }
25
+ if (constants_1.BASE_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.has(name)) {
26
+ return false;
27
+ }
28
+ nf.referencedDirectiveNames.add(name);
29
+ },
30
+ },
18
31
  DirectiveDefinition: {
19
32
  enter(node) {
20
33
  const name = node.name.value;
@@ -40,19 +53,18 @@ function upsertDirectiveAndSchemaDefinitions(nf, document) {
40
53
  OperationTypeDefinition: {
41
54
  enter(node) {
42
55
  const operationType = node.operation;
43
- const operationPath = `${nf.parentTypeName}.${operationType}`;
44
56
  const definitionNode = nf.schemaDefinition.operationTypes.get(operationType);
45
- const newTypeName = (0, type_merging_1.getNamedTypeForChild)(operationPath, node.type);
57
+ const namedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(node.type);
46
58
  if (definitionNode) {
47
- (0, errors_1.duplicateOperationTypeDefinitionError)(operationType, newTypeName, (0, type_merging_1.getNamedTypeForChild)(operationPath, definitionNode.type));
59
+ (0, errors_1.duplicateOperationTypeDefinitionError)(operationType, namedTypeName, (0, ast_1.getTypeNodeNamedTypeName)(definitionNode.type));
48
60
  return false;
49
61
  }
50
- const existingOperationType = nf.operationTypeNames.get(newTypeName);
62
+ const existingOperationType = nf.operationTypeNodeByTypeName.get(namedTypeName);
51
63
  if (existingOperationType) {
52
- nf.errors.push((0, errors_1.invalidOperationTypeDefinitionError)(existingOperationType, newTypeName, operationType));
64
+ nf.errors.push((0, errors_1.invalidOperationTypeDefinitionError)(existingOperationType, namedTypeName, operationType));
53
65
  return false;
54
66
  }
55
- nf.operationTypeNames.set(newTypeName, operationType);
67
+ nf.operationTypeNodeByTypeName.set(namedTypeName, operationType);
56
68
  nf.schemaDefinition.operationTypes.set(operationType, node);
57
69
  return false;
58
70
  },
@@ -80,41 +92,28 @@ exports.upsertDirectiveAndSchemaDefinitions = upsertDirectiveAndSchemaDefinition
80
92
  function upsertParentsAndChildren(nf, document) {
81
93
  let isParentRootType = false;
82
94
  (0, graphql_1.visit)(document, {
83
- Directive: {
84
- enter(node) {
85
- const name = node.name.value;
86
- if (constants_1.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.has(name)) {
87
- nf.isSubgraphVersionTwo = true;
88
- return false;
89
- }
90
- if (constants_1.BASE_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.has(name)) {
91
- return false;
92
- }
93
- nf.referencedDirectiveNames.add(name);
94
- },
95
- },
96
95
  EnumTypeDefinition: {
97
96
  enter(node) {
98
- nf.parentTypeName = node.name.value;
99
- if (nf.parentDefinitionDataByTypeName.has(nf.parentTypeName)) {
100
- nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.parentTypeName));
97
+ nf.originalParentTypeName = node.name.value;
98
+ if (nf.parentDefinitionDataByTypeName.has(nf.originalParentTypeName)) {
99
+ nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.originalParentTypeName));
101
100
  return false;
102
101
  }
103
102
  nf.lastParentNodeKind = node.kind;
104
103
  const directivesByDirectiveName = nf.extractDirectivesAndAuthorization(node, new Map());
105
- (0, utils_4.upsertEnumDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, directivesByDirectiveName);
104
+ (0, utils_4.addEnumDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, directivesByDirectiveName);
106
105
  },
107
106
  leave() {
108
- nf.parentTypeName = '';
107
+ nf.originalParentTypeName = '';
109
108
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
110
109
  },
111
110
  },
112
111
  EnumTypeExtension: {
113
112
  enter(node) {
114
- nf.parentTypeName = node.name.value;
113
+ nf.originalParentTypeName = node.name.value;
115
114
  nf.lastParentNodeKind = node.kind;
116
115
  nf.isCurrentParentExtension = true;
117
- const extension = nf.parentExtensionDataByTypeName.get(nf.parentTypeName);
116
+ const extension = nf.parentExtensionDataByTypeName.get(nf.originalParentTypeName);
118
117
  if (extension) {
119
118
  if (extension.kind !== graphql_1.Kind.ENUM_TYPE_EXTENSION) {
120
119
  nf.errors.push((0, errors_1.incompatibleExtensionKindsError)(node, extension.kind));
@@ -124,10 +123,10 @@ function upsertParentsAndChildren(nf, document) {
124
123
  return;
125
124
  }
126
125
  const directivesByDirectiveName = nf.extractDirectivesAndAuthorization(node, new Map());
127
- (0, utils_4.upsertEnumExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, directivesByDirectiveName);
126
+ (0, utils_4.addEnumExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, directivesByDirectiveName);
128
127
  },
129
128
  leave() {
130
- nf.parentTypeName = '';
129
+ nf.originalParentTypeName = '';
131
130
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
132
131
  nf.isCurrentParentExtension = false;
133
132
  },
@@ -137,19 +136,19 @@ function upsertParentsAndChildren(nf, document) {
137
136
  nf.childName = node.name.value;
138
137
  nf.lastChildNodeKind = node.kind;
139
138
  const parent = nf.isCurrentParentExtension
140
- ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.EXTENSIONS)
141
- : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.parentTypeName, string_constants_1.PARENTS);
139
+ ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.EXTENSIONS)
140
+ : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENTS);
142
141
  if (parent.kind !== graphql_1.Kind.ENUM_TYPE_DEFINITION && parent.kind !== graphql_1.Kind.ENUM_TYPE_EXTENSION) {
143
142
  throw (0, errors_1.unexpectedKindFatalError)(nf.childName);
144
143
  }
145
144
  if (parent.enumValueDataByValueName.has(nf.childName)) {
146
145
  const error = nf.isCurrentParentExtension
147
- ? (0, errors_1.duplicateValueExtensionError)('enum', nf.parentTypeName, nf.childName)
148
- : (0, errors_1.duplicateEnumValueDefinitionError)(nf.childName, nf.parentTypeName);
146
+ ? (0, errors_1.duplicateValueExtensionError)('enum', nf.originalParentTypeName, nf.childName)
147
+ : (0, errors_1.duplicateEnumValueDefinitionError)(nf.childName, nf.originalParentTypeName);
149
148
  nf.errors.push(error);
150
149
  return;
151
150
  }
152
- (0, utils_4.upsertEnumValueDataByNode)(parent.enumValueDataByValueName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.parentTypeName);
151
+ (0, utils_4.addEnumValueDataByNode)(parent.enumValueDataByValueName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.originalParentTypeName);
153
152
  },
154
153
  leave() {
155
154
  nf.childName = '';
@@ -166,33 +165,32 @@ function upsertParentsAndChildren(nf, document) {
166
165
  }
167
166
  }
168
167
  nf.lastChildNodeKind = node.kind;
169
- const fieldPath = `${nf.parentTypeName}.${nf.childName}`;
170
168
  nf.lastChildNodeKind = node.kind;
171
- const fieldNamedTypeName = (0, type_merging_1.getNamedTypeForChild)(fieldPath, node.type);
169
+ const fieldNamedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(node.type);
172
170
  if (!constants_1.BASE_SCALARS.has(fieldNamedTypeName)) {
173
171
  nf.referencedTypeNames.add(fieldNamedTypeName);
174
172
  }
175
173
  const parentData = nf.isCurrentParentExtension
176
- ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.EXTENSIONS)
177
- : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.parentTypeName, string_constants_1.PARENTS);
174
+ ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.EXTENSIONS)
175
+ : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENTS);
178
176
  if (parentData.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION &&
179
177
  parentData.kind !== graphql_1.Kind.OBJECT_TYPE_EXTENSION &&
180
178
  parentData.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION &&
181
179
  parentData.kind !== graphql_1.Kind.INTERFACE_TYPE_EXTENSION) {
182
- throw (0, errors_1.unexpectedKindFatalError)(nf.parentTypeName);
180
+ throw (0, errors_1.unexpectedKindFatalError)(nf.originalParentTypeName);
183
181
  }
184
182
  if (parentData.fieldDataByFieldName.has(nf.childName)) {
185
- nf.errors.push((0, errors_1.duplicateFieldDefinitionError)(nf.childName, nf.parentTypeName));
183
+ nf.errors.push((0, errors_1.duplicateFieldDefinitionError)(nf.childName, nf.originalParentTypeName));
186
184
  return;
187
185
  }
188
- const argumentDataByArgumentName = (0, utils_4.extractArguments)(new Map(), node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.parentsWithChildArguments, nf.parentTypeName, nf.subgraphName || string_constants_1.N_A);
186
+ const argumentDataByArgumentName = (0, utils_4.extractArguments)(new Map(), node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.parentsWithChildArguments, nf.originalParentTypeName, nf.renamedParentTypeName || nf.originalParentTypeName, nf.subgraphName);
189
187
  const directivesByDirectiveName = nf.extractDirectivesAndAuthorization(node, (0, utils_4.addInheritedDirectivesToFieldData)(parentData.directivesByDirectiveName, new Map()));
190
- const fieldData = (0, utils_4.upsertFieldDataByNode)(parentData.fieldDataByFieldName, node, nf.errors, argumentDataByArgumentName, directivesByDirectiveName, nf.parentTypeName, nf.subgraphName || string_constants_1.N_A, nf.isSubgraphVersionTwo);
191
- const entityContainer = nf.entityContainerByTypeName.get(nf.parentTypeName);
188
+ const fieldData = (0, utils_4.addFieldDataByNode)(parentData.fieldDataByFieldName, node, nf.errors, argumentDataByArgumentName, directivesByDirectiveName, nf.originalParentTypeName, nf.renamedParentTypeName || nf.originalParentTypeName, nf.subgraphName, nf.isSubgraphVersionTwo);
189
+ const entityContainer = nf.entityContainerByTypeName.get(nf.originalParentTypeName);
192
190
  if (entityContainer) {
193
191
  entityContainer.fieldNames.add(nf.childName);
194
192
  // Only entities will have an existing FieldSet
195
- const existingFieldSet = nf.fieldSetContainerByTypeName.get(nf.parentTypeName);
193
+ const existingFieldSet = nf.fieldSetContainerByTypeName.get(nf.originalParentTypeName);
196
194
  if (existingFieldSet) {
197
195
  // @requires should only be defined on a field whose parent is an entity
198
196
  // If there is existingFieldSet, it's an entity
@@ -208,7 +206,7 @@ function upsertParentsAndChildren(nf, document) {
208
206
  if (!providesDirectives) {
209
207
  return;
210
208
  }
211
- const fieldSetContainer = (0, utils_1.getValueOrDefault)(nf.fieldSetContainerByTypeName, nf.parentTypeName, utils_3.newFieldSetContainer);
209
+ const fieldSetContainer = (0, utils_1.getValueOrDefault)(nf.fieldSetContainerByTypeName, nf.originalParentTypeName, utils_3.newFieldSetContainer);
212
210
  // @provides only makes sense on entities, but the field can be encountered before the type definition
213
211
  // When the FieldSet is evaluated, it will be checked whether the field is an entity.
214
212
  (0, utils_3.extractFieldSetValue)(nf.childName, fieldSetContainer.provides, providesDirectives);
@@ -220,37 +218,37 @@ function upsertParentsAndChildren(nf, document) {
220
218
  },
221
219
  InputObjectTypeDefinition: {
222
220
  enter(node) {
223
- nf.parentTypeName = node.name.value;
224
- if (nf.parentDefinitionDataByTypeName.has(nf.parentTypeName)) {
225
- nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.parentTypeName));
221
+ nf.originalParentTypeName = node.name.value;
222
+ if (nf.parentDefinitionDataByTypeName.has(nf.originalParentTypeName)) {
223
+ nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.originalParentTypeName));
226
224
  return false;
227
225
  }
228
226
  nf.lastParentNodeKind = node.kind;
229
- (0, utils_4.upsertInputObjectDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath);
227
+ (0, utils_4.addInputObjectDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.subgraphName, nf.errors);
230
228
  },
231
229
  leave() {
232
230
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
233
- nf.parentTypeName = '';
231
+ nf.originalParentTypeName = '';
234
232
  },
235
233
  },
236
234
  InputObjectTypeExtension: {
237
235
  enter(node) {
238
- nf.parentTypeName = node.name.value;
236
+ nf.originalParentTypeName = node.name.value;
239
237
  nf.lastParentNodeKind = node.kind;
240
238
  nf.isCurrentParentExtension = true;
241
- const extension = nf.parentExtensionDataByTypeName.get(nf.parentTypeName);
239
+ const extension = nf.parentExtensionDataByTypeName.get(nf.originalParentTypeName);
242
240
  if (extension) {
243
241
  if (extension.kind !== graphql_1.Kind.INPUT_OBJECT_TYPE_EXTENSION) {
244
242
  nf.errors.push((0, errors_1.incompatibleExtensionKindsError)(node, extension.kind));
245
243
  return false;
246
244
  }
247
- (0, utils_4.extractDirectives)(node, extension.directivesByDirectiveName, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.parentTypeName);
245
+ (0, utils_4.extractDirectives)(node, extension.directivesByDirectiveName, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.originalParentTypeName);
248
246
  return;
249
247
  }
250
- (0, utils_4.upsertInputObjectExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath);
248
+ (0, utils_4.addInputObjectExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.errors);
251
249
  },
252
250
  leave() {
253
- nf.parentTypeName = '';
251
+ nf.originalParentTypeName = '';
254
252
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
255
253
  nf.isCurrentParentExtension = false;
256
254
  },
@@ -266,21 +264,22 @@ function upsertParentsAndChildren(nf, document) {
266
264
  }
267
265
  nf.childName = name;
268
266
  nf.lastChildNodeKind = node.kind;
269
- const valueRootTypeName = (0, type_merging_1.getNamedTypeForChild)(`${nf.parentTypeName}.${name}`, node.type);
270
- if (!constants_1.BASE_SCALARS.has(valueRootTypeName)) {
271
- nf.referencedTypeNames.add(valueRootTypeName);
267
+ const valuePath = `${nf.originalParentTypeName}.${name}`;
268
+ const namedInputValueTypeName = (0, ast_1.getTypeNodeNamedTypeName)(node.type);
269
+ if (!constants_1.BASE_SCALARS.has(namedInputValueTypeName)) {
270
+ nf.referencedTypeNames.add(namedInputValueTypeName);
272
271
  }
273
272
  const parent = nf.isCurrentParentExtension
274
- ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.EXTENSIONS)
275
- : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.parentTypeName, string_constants_1.PARENTS);
273
+ ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.EXTENSIONS)
274
+ : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENTS);
276
275
  if (parent.kind !== graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION && parent.kind !== graphql_1.Kind.INPUT_OBJECT_TYPE_EXTENSION) {
277
- throw (0, errors_1.unexpectedKindFatalError)(nf.parentTypeName);
276
+ throw (0, errors_1.unexpectedKindFatalError)(nf.originalParentTypeName);
278
277
  }
279
278
  if (parent.inputValueDataByValueName.has(name)) {
280
- nf.errors.push((0, errors_1.duplicateValueExtensionError)('input', nf.parentTypeName, name));
279
+ nf.errors.push((0, errors_1.duplicateValueExtensionError)('input', nf.originalParentTypeName, name));
281
280
  return;
282
281
  }
283
- (0, utils_4.upsertInputValueDataByNode)(parent.inputValueDataByValueName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.parentTypeName);
282
+ (0, utils_4.addInputValueDataByNode)(parent.inputValueDataByValueName, node, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, valuePath, nf.subgraphName, nf.errors);
284
283
  },
285
284
  leave() {
286
285
  nf.argumentName = '';
@@ -294,7 +293,7 @@ function upsertParentsAndChildren(nf, document) {
294
293
  InterfaceTypeDefinition: {
295
294
  enter(node) {
296
295
  const typeName = node.name.value;
297
- nf.parentTypeName = typeName;
296
+ nf.originalParentTypeName = typeName;
298
297
  nf.lastParentNodeKind = node.kind;
299
298
  if ((0, utils_2.isNodeExtension)(node)) {
300
299
  return nf.handleExtensionWithFields(node);
@@ -304,7 +303,10 @@ function upsertParentsAndChildren(nf, document) {
304
303
  return false;
305
304
  }
306
305
  const isEntity = (0, utils_2.isObjectLikeNodeEntity)(node);
307
- (0, utils_4.upsertInterfaceDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, isEntity, nf.subgraphName || string_constants_1.N_A);
306
+ if (isEntity && !nf.graph.hasNode(typeName)) {
307
+ nf.graph.addNode(typeName);
308
+ }
309
+ (0, utils_4.addInterfaceDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, isEntity, nf.subgraphName);
308
310
  if (!isEntity) {
309
311
  return;
310
312
  }
@@ -316,7 +318,7 @@ function upsertParentsAndChildren(nf, document) {
316
318
  typeName: typeName,
317
319
  });
318
320
  (0, utils_1.upsertEntityContainerProperties)(nf.entityContainerByTypeName, {
319
- typeName: nf.parentTypeName,
321
+ typeName: nf.originalParentTypeName,
320
322
  ...(nf.subgraphName ? { subgraphNames: [nf.subgraphName] } : {}),
321
323
  });
322
324
  const fieldSetContainer = (0, utils_1.getValueOrDefault)(nf.fieldSetContainerByTypeName, typeName, utils_3.newFieldSetContainer);
@@ -325,55 +327,59 @@ function upsertParentsAndChildren(nf, document) {
325
327
  leave() {
326
328
  // @extends treats the node as an extension, so fetch the correct data
327
329
  const parentData = nf.isCurrentParentExtension
328
- ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP)
329
- : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.parentTypeName, string_constants_1.PARENT_DEFINITION_DATA_MAP);
330
+ ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP)
331
+ : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENT_DEFINITION_DATA_MAP);
330
332
  (0, utils_4.removeInheritableDirectivesFromParentWithFieldsData)(parentData);
331
333
  nf.isCurrentParentExtension = false;
332
- nf.parentTypeName = '';
334
+ nf.originalParentTypeName = '';
333
335
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
334
336
  },
335
337
  },
336
338
  InterfaceTypeExtension: {
337
339
  enter(node) {
338
- nf.parentTypeName = node.name.value;
340
+ nf.originalParentTypeName = node.name.value;
339
341
  nf.lastParentNodeKind = node.kind;
340
342
  return nf.handleExtensionWithFields(node);
341
343
  },
342
344
  leave() {
343
- (0, utils_4.removeInheritableDirectivesFromParentWithFieldsData)((0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP));
345
+ (0, utils_4.removeInheritableDirectivesFromParentWithFieldsData)((0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP));
344
346
  nf.isCurrentParentExtension = false;
345
- nf.parentTypeName = '';
347
+ nf.originalParentTypeName = '';
346
348
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
347
349
  },
348
350
  },
349
351
  ObjectTypeDefinition: {
350
352
  enter(node) {
351
- const typeName = node.name.value;
352
- if (typeName === string_constants_1.SERVICE_OBJECT) {
353
+ nf.originalParentTypeName = node.name.value;
354
+ if (nf.originalParentTypeName === string_constants_1.SERVICE_OBJECT) {
353
355
  return false;
354
356
  }
355
- isParentRootType = (0, utils_4.isTypeNameRootType)(typeName, nf.operationTypeNames);
356
- nf.parentTypeName = typeName;
357
+ isParentRootType = (0, utils_4.isTypeNameRootType)(nf.originalParentTypeName, nf.operationTypeNodeByTypeName);
358
+ nf.renamedParentTypeName = (0, utils_4.getRenamedRootTypeName)(nf.originalParentTypeName, nf.operationTypeNodeByTypeName);
359
+ nf.originalTypeNameByRenamedTypeName.set(nf.renamedParentTypeName, nf.originalParentTypeName);
360
+ if (!nf.graph.hasNode(nf.renamedParentTypeName)) {
361
+ nf.graph.addNode(nf.renamedParentTypeName);
362
+ }
357
363
  nf.lastParentNodeKind = node.kind;
358
- (0, utils_2.addConcreteTypesForImplementedInterfaces)(node, nf.abstractToConcreteTypeNames);
364
+ (0, utils_2.addConcreteTypesForImplementedInterfaces)(node, nf.concreteTypeNamesByAbstractTypeName);
359
365
  nf.handleInterfaceObject(node);
360
366
  // handling for @extends directive
361
367
  if ((0, utils_2.isNodeExtension)(node)) {
362
- return nf.handleExtensionWithFields(node);
368
+ return nf.handleExtensionWithFields(node, isParentRootType);
363
369
  }
364
- if (nf.parentDefinitionDataByTypeName.has(typeName)) {
365
- nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), typeName));
370
+ if (nf.parentDefinitionDataByTypeName.has(nf.originalParentTypeName)) {
371
+ nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.originalParentTypeName));
366
372
  return false;
367
373
  }
368
374
  const isEntity = (0, utils_2.isObjectLikeNodeEntity)(node);
369
- (0, utils_4.upsertObjectDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, isEntity, isParentRootType, nf.subgraphName || 'N/A');
375
+ (0, utils_4.addObjectDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, isEntity, isParentRootType, nf.subgraphName || 'N/A', nf.renamedParentTypeName);
370
376
  if (!isEntity) {
371
377
  return;
372
378
  }
373
- const fieldSetContainer = (0, utils_1.getValueOrDefault)(nf.fieldSetContainerByTypeName, typeName, utils_3.newFieldSetContainer);
379
+ const fieldSetContainer = (0, utils_1.getValueOrDefault)(nf.fieldSetContainerByTypeName, nf.originalParentTypeName, utils_3.newFieldSetContainer);
374
380
  nf.extractKeyFieldSets(node, fieldSetContainer);
375
381
  (0, utils_1.upsertEntityContainerProperties)(nf.entityContainerByTypeName, {
376
- typeName: nf.parentTypeName,
382
+ typeName: nf.originalParentTypeName,
377
383
  keyFieldSets: fieldSetContainer.keys,
378
384
  ...(nf.subgraphName ? { subgraphNames: [nf.subgraphName] } : {}),
379
385
  });
@@ -381,31 +387,38 @@ function upsertParentsAndChildren(nf, document) {
381
387
  leave() {
382
388
  // @extends treats the node as an extension, so fetch the correct data
383
389
  const parentData = nf.isCurrentParentExtension
384
- ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP)
385
- : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.parentTypeName, string_constants_1.PARENT_DEFINITION_DATA_MAP);
390
+ ? (0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP)
391
+ : (0, utils_1.getOrThrowError)(nf.parentDefinitionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENT_DEFINITION_DATA_MAP);
386
392
  (0, utils_4.removeInheritableDirectivesFromParentWithFieldsData)(parentData);
387
393
  isParentRootType = false;
388
394
  nf.isCurrentParentExtension = false;
389
- nf.parentTypeName = '';
395
+ nf.originalParentTypeName = '';
396
+ nf.renamedParentTypeName = '';
390
397
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
391
398
  },
392
399
  },
393
400
  ObjectTypeExtension: {
394
401
  enter(node) {
395
- nf.parentTypeName = node.name.value;
396
- if (nf.parentTypeName === string_constants_1.SERVICE_OBJECT) {
402
+ nf.originalParentTypeName = node.name.value;
403
+ if (nf.originalParentTypeName === string_constants_1.SERVICE_OBJECT) {
397
404
  return false;
398
405
  }
399
- isParentRootType = (0, utils_4.isTypeNameRootType)(nf.parentTypeName, nf.operationTypeNames);
406
+ isParentRootType = (0, utils_4.isTypeNameRootType)(nf.originalParentTypeName, nf.operationTypeNodeByTypeName);
407
+ nf.renamedParentTypeName = (0, utils_4.getRenamedRootTypeName)(nf.originalParentTypeName, nf.operationTypeNodeByTypeName);
408
+ nf.originalTypeNameByRenamedTypeName.set(nf.renamedParentTypeName, nf.originalParentTypeName);
409
+ if (!nf.graph.hasNode(nf.renamedParentTypeName)) {
410
+ nf.graph.addNode(nf.renamedParentTypeName);
411
+ }
400
412
  nf.lastParentNodeKind = node.kind;
401
- (0, utils_2.addConcreteTypesForImplementedInterfaces)(node, nf.abstractToConcreteTypeNames);
402
- return nf.handleExtensionWithFields(node);
413
+ (0, utils_2.addConcreteTypesForImplementedInterfaces)(node, nf.concreteTypeNamesByAbstractTypeName);
414
+ return nf.handleExtensionWithFields(node, isParentRootType);
403
415
  },
404
416
  leave() {
405
- (0, utils_4.removeInheritableDirectivesFromParentWithFieldsData)((0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.parentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP));
417
+ (0, utils_4.removeInheritableDirectivesFromParentWithFieldsData)((0, utils_1.getOrThrowError)(nf.parentExtensionDataByTypeName, nf.originalParentTypeName, string_constants_1.PARENT_EXTENSION_DATA_MAP));
406
418
  isParentRootType = false;
407
419
  nf.isCurrentParentExtension = false;
408
- nf.parentTypeName = '';
420
+ nf.originalParentTypeName = '';
421
+ nf.renamedParentTypeName = '';
409
422
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
410
423
  },
411
424
  },
@@ -420,24 +433,24 @@ function upsertParentsAndChildren(nf, document) {
420
433
  nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), name));
421
434
  return false;
422
435
  }
423
- nf.parentTypeName = name;
436
+ nf.originalParentTypeName = name;
424
437
  nf.lastParentNodeKind = node.kind;
425
438
  const directivesByDirectiveName = nf.extractDirectivesAndAuthorization(node, new Map());
426
- (0, utils_4.upsertScalarDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, directivesByDirectiveName);
439
+ (0, utils_4.addScalarDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, directivesByDirectiveName);
427
440
  },
428
441
  leave() {
429
- nf.parentTypeName = '';
442
+ nf.originalParentTypeName = '';
430
443
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
431
444
  },
432
445
  },
433
446
  ScalarTypeExtension: {
434
447
  enter(node) {
435
- nf.parentTypeName = node.name.value;
436
- if (nf.parentTypeName === string_constants_1.ANY_SCALAR) {
448
+ nf.originalParentTypeName = node.name.value;
449
+ if (nf.originalParentTypeName === string_constants_1.ANY_SCALAR) {
437
450
  return false;
438
451
  }
439
452
  nf.lastParentNodeKind = node.kind;
440
- const extension = nf.parentExtensionDataByTypeName.get(nf.parentTypeName);
453
+ const extension = nf.parentExtensionDataByTypeName.get(nf.originalParentTypeName);
441
454
  if (extension) {
442
455
  if (extension.kind !== graphql_1.Kind.SCALAR_TYPE_EXTENSION) {
443
456
  nf.errors.push((0, errors_1.incompatibleExtensionKindsError)(node, extension.kind));
@@ -447,60 +460,60 @@ function upsertParentsAndChildren(nf, document) {
447
460
  return false;
448
461
  }
449
462
  const directivesByDirectiveName = nf.extractDirectivesAndAuthorization(node, new Map());
450
- (0, utils_4.upsertScalarExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, directivesByDirectiveName);
463
+ (0, utils_4.addScalarExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, directivesByDirectiveName);
451
464
  return false;
452
465
  },
453
466
  leave() {
454
- nf.parentTypeName = '';
467
+ nf.originalParentTypeName = '';
455
468
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
456
469
  },
457
470
  },
458
471
  UnionTypeDefinition: {
459
472
  enter(node) {
460
- nf.parentTypeName = node.name.value;
461
- if (nf.parentTypeName === string_constants_1.ENTITY_UNION) {
473
+ nf.originalParentTypeName = node.name.value;
474
+ if (nf.originalParentTypeName === string_constants_1.ENTITY_UNION) {
462
475
  return false;
463
476
  }
464
- const parent = nf.parentDefinitionDataByTypeName.get(nf.parentTypeName);
477
+ const parent = nf.parentDefinitionDataByTypeName.get(nf.originalParentTypeName);
465
478
  if (parent) {
466
- nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.parentTypeName));
479
+ nf.errors.push((0, errors_1.duplicateTypeDefinitionError)((0, utils_1.kindToTypeString)(node.kind), nf.originalParentTypeName));
467
480
  return false;
468
481
  }
469
482
  nf.lastParentNodeKind = node.kind;
470
- (0, utils_4.upsertUnionDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.abstractToConcreteTypeNames, nf.referencedTypeNames);
483
+ (0, utils_4.addUnionDefinitionDataByNode)(nf.parentDefinitionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.concreteTypeNamesByAbstractTypeName, nf.referencedTypeNames);
471
484
  },
472
485
  leave() {
473
- nf.parentTypeName = '';
486
+ nf.originalParentTypeName = '';
474
487
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
475
488
  },
476
489
  },
477
490
  UnionTypeExtension: {
478
491
  enter(node) {
479
- nf.parentTypeName = node.name.value;
480
- if (nf.parentTypeName === string_constants_1.ENTITY_UNION) {
492
+ nf.originalParentTypeName = node.name.value;
493
+ if (nf.originalParentTypeName === string_constants_1.ENTITY_UNION) {
481
494
  return false;
482
495
  }
483
- const extension = nf.parentExtensionDataByTypeName.get(nf.parentTypeName);
496
+ const extension = nf.parentExtensionDataByTypeName.get(nf.originalParentTypeName);
484
497
  if (!node.types?.length) {
485
- nf.errors.push((0, errors_1.noDefinedUnionMembersError)(nf.parentTypeName, true));
498
+ nf.errors.push((0, errors_1.noDefinedUnionMembersError)(nf.originalParentTypeName, true));
486
499
  return false;
487
500
  }
488
501
  nf.lastParentNodeKind = node.kind;
489
- (0, utils_2.addConcreteTypesForUnion)(node, nf.abstractToConcreteTypeNames);
502
+ (0, utils_2.addConcreteTypesForUnion)(node, nf.concreteTypeNamesByAbstractTypeName);
490
503
  if (extension) {
491
504
  if (extension.kind !== graphql_1.Kind.UNION_TYPE_EXTENSION) {
492
505
  nf.errors.push((0, errors_1.incompatibleExtensionKindsError)(node, extension.kind));
493
506
  return false;
494
507
  }
495
- (0, utils_4.extractDirectives)(node, extension.directivesByDirectiveName, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.parentTypeName);
496
- (0, utils_4.extractUniqueUnionMembers)(node.types, extension.memberByMemberTypeName, nf.errors, nf.parentTypeName, nf.abstractToConcreteTypeNames, nf.referencedTypeNames);
508
+ (0, utils_4.extractDirectives)(node, extension.directivesByDirectiveName, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.originalParentTypeName);
509
+ (0, utils_4.extractUniqueUnionMembers)(node.types, extension.memberByMemberTypeName, nf.errors, nf.originalParentTypeName, nf.concreteTypeNamesByAbstractTypeName, nf.referencedTypeNames);
497
510
  return false;
498
511
  }
499
- (0, utils_4.upsertUnionExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.abstractToConcreteTypeNames, nf.referencedTypeNames);
512
+ (0, utils_4.addUnionExtensionDataByNode)(nf.parentExtensionDataByTypeName, node, nf.errors, nf.directiveDefinitionByDirectiveName, nf.handledRepeatedDirectivesByHostPath, nf.concreteTypeNamesByAbstractTypeName, nf.referencedTypeNames);
500
513
  return false;
501
514
  },
502
515
  leave() {
503
- nf.parentTypeName = '';
516
+ nf.originalParentTypeName = '';
504
517
  nf.lastParentNodeKind = graphql_1.Kind.NULL;
505
518
  },
506
519
  },
@@ -515,18 +528,19 @@ function consolidateAuthorizationDirectives(nf, definitions) {
515
528
  FieldDefinition: {
516
529
  enter(node) {
517
530
  nf.childName = node.name.value;
518
- const typeName = (0, type_merging_1.getNamedTypeForChild)(`${nf.parentTypeName}.${nf.childName}`, node.type);
531
+ const typeName = (0, ast_1.getTypeNodeNamedTypeName)(node.type);
519
532
  const inheritsAuthorization = nf.leafTypeNamesWithAuthorizationDirectives.has(typeName);
520
533
  if ((!parentAuthorizationData || !parentAuthorizationData.hasParentLevelAuthorization) &&
521
534
  !inheritsAuthorization) {
522
535
  return false;
523
536
  }
537
+ const parentTypeName = nf.renamedParentTypeName || nf.originalParentTypeName;
524
538
  if (!parentAuthorizationData) {
525
- parentAuthorizationData = (0, utils_1.setAndGetValue)(nf.authorizationDataByParentTypeName, nf.parentTypeName, (0, utils_1.newAuthorizationData)(nf.parentTypeName));
539
+ parentAuthorizationData = (0, utils_1.setAndGetValue)(nf.authorizationDataByParentTypeName, parentTypeName, (0, utils_1.newAuthorizationData)(parentTypeName));
526
540
  }
527
541
  const fieldAuthorizationData = (0, utils_1.getValueOrDefault)(parentAuthorizationData.fieldAuthorizationDataByFieldName, nf.childName, () => (0, utils_1.newFieldAuthorizationData)(nf.childName));
528
542
  if (!(0, utils_1.mergeAuthorizationDataByAND)(parentAuthorizationData, fieldAuthorizationData)) {
529
- nf.invalidOrScopesHostPaths.add(`${nf.parentTypeName}.${nf.childName}`);
543
+ nf.invalidOrScopesHostPaths.add(`${nf.originalParentTypeName}.${nf.childName}`);
530
544
  return false;
531
545
  }
532
546
  if (!inheritsAuthorization) {
@@ -542,7 +556,7 @@ function consolidateAuthorizationDirectives(nf, definitions) {
542
556
  if (definitionAuthorizationData &&
543
557
  definitionAuthorizationData.hasParentLevelAuthorization &&
544
558
  !(0, utils_1.mergeAuthorizationDataByAND)(definitionAuthorizationData, fieldAuthorizationData)) {
545
- nf.invalidOrScopesHostPaths.add(`${nf.parentTypeName}.${nf.childName}`);
559
+ nf.invalidOrScopesHostPaths.add(`${nf.originalParentTypeName}.${nf.childName}`);
546
560
  }
547
561
  return false;
548
562
  },
@@ -552,45 +566,59 @@ function consolidateAuthorizationDirectives(nf, definitions) {
552
566
  },
553
567
  InterfaceTypeDefinition: {
554
568
  enter(node) {
555
- nf.parentTypeName = node.name.value;
569
+ nf.originalParentTypeName = node.name.value;
556
570
  parentAuthorizationData = nf.getAuthorizationData(node);
557
571
  isInterfaceKind = true;
558
572
  },
559
573
  leave() {
560
- nf.parentTypeName = '';
574
+ nf.originalParentTypeName = '';
561
575
  parentAuthorizationData = undefined;
562
576
  isInterfaceKind = false;
563
577
  },
564
578
  },
565
579
  InterfaceTypeExtension: {
566
580
  enter(node) {
567
- nf.parentTypeName = node.name.value;
581
+ nf.originalParentTypeName = node.name.value;
568
582
  parentAuthorizationData = nf.getAuthorizationData(node);
569
583
  isInterfaceKind = true;
570
584
  },
571
585
  leave() {
572
- nf.parentTypeName = '';
586
+ nf.originalParentTypeName = '';
573
587
  parentAuthorizationData = undefined;
574
588
  isInterfaceKind = false;
575
589
  },
576
590
  },
577
591
  ObjectTypeDefinition: {
578
592
  enter(node) {
579
- nf.parentTypeName = node.name.value;
593
+ const parentData = nf.parentDefinitionDataByTypeName.get(node.name.value) ||
594
+ nf.parentExtensionDataByTypeName.get(node.name.value);
595
+ if (!parentData) {
596
+ return false;
597
+ }
598
+ nf.originalParentTypeName = parentData.name;
599
+ nf.renamedParentTypeName = parentData.renamedTypeName;
580
600
  parentAuthorizationData = nf.getAuthorizationData(node);
581
601
  },
582
602
  leave() {
583
- nf.parentTypeName = '';
603
+ nf.originalParentTypeName = '';
604
+ nf.renamedParentTypeName = '';
584
605
  parentAuthorizationData = undefined;
585
606
  },
586
607
  },
587
608
  ObjectTypeExtension: {
588
609
  enter(node) {
589
- nf.parentTypeName = node.name.value;
610
+ const parentData = nf.parentDefinitionDataByTypeName.get(node.name.value) ||
611
+ nf.parentExtensionDataByTypeName.get(node.name.value);
612
+ if (!parentData) {
613
+ return false;
614
+ }
615
+ nf.originalParentTypeName = parentData.name;
616
+ nf.renamedParentTypeName = parentData.renamedTypeName;
590
617
  parentAuthorizationData = nf.getAuthorizationData(node);
591
618
  },
592
619
  leave() {
593
- nf.parentTypeName = '';
620
+ nf.originalParentTypeName = '';
621
+ nf.renamedParentTypeName = '';
594
622
  parentAuthorizationData = undefined;
595
623
  },
596
624
  },