@wundergraph/composition 0.18.0 → 0.18.1

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 (56) hide show
  1. package/dist/ast/ast.d.ts +2 -9
  2. package/dist/ast/ast.js +4 -32
  3. package/dist/ast/ast.js.map +1 -1
  4. package/dist/ast/utils.d.ts +1 -2
  5. package/dist/ast/utils.js.map +1 -1
  6. package/dist/errors/errors.d.ts +6 -11
  7. package/dist/errors/errors.js +18 -29
  8. package/dist/errors/errors.js.map +1 -1
  9. package/dist/federation/federation-factory.d.ts +6 -6
  10. package/dist/federation/federation-factory.js +19 -18
  11. package/dist/federation/federation-factory.js.map +1 -1
  12. package/dist/federation/utils.d.ts +4 -4
  13. package/dist/federation/utils.js +2 -2
  14. package/dist/federation/utils.js.map +1 -1
  15. package/dist/index.d.ts +8 -1
  16. package/dist/index.js +8 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/normalization/normalization-factory.d.ts +19 -26
  19. package/dist/normalization/normalization-factory.js +179 -994
  20. package/dist/normalization/normalization-factory.js.map +1 -1
  21. package/dist/normalization/utils.d.ts +6 -126
  22. package/dist/normalization/utils.js +71 -166
  23. package/dist/normalization/utils.js.map +1 -1
  24. package/dist/normalization/walkers.d.ts +5 -0
  25. package/dist/normalization/walkers.js +593 -0
  26. package/dist/normalization/walkers.js.map +1 -0
  27. package/dist/schema-building/ast.d.ts +104 -0
  28. package/dist/schema-building/ast.js +156 -0
  29. package/dist/schema-building/ast.js.map +1 -0
  30. package/dist/schema-building/type-definition-data.d.ts +108 -0
  31. package/dist/schema-building/type-definition-data.js +3 -0
  32. package/dist/schema-building/type-definition-data.js.map +1 -0
  33. package/dist/schema-building/type-extension-data.d.ts +45 -0
  34. package/dist/schema-building/type-extension-data.js +3 -0
  35. package/dist/schema-building/type-extension-data.js.map +1 -0
  36. package/dist/{type-merging → schema-building}/type-merging.js +5 -4
  37. package/dist/schema-building/type-merging.js.map +1 -0
  38. package/dist/schema-building/utils.d.ts +42 -0
  39. package/dist/schema-building/utils.js +600 -0
  40. package/dist/schema-building/utils.js.map +1 -0
  41. package/dist/subgraph/subgraph.d.ts +4 -5
  42. package/dist/subgraph/subgraph.js +2 -91
  43. package/dist/subgraph/subgraph.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/dist/utils/constants.d.ts +4 -2
  46. package/dist/utils/constants.js +383 -359
  47. package/dist/utils/constants.js.map +1 -1
  48. package/dist/utils/string-constants.d.ts +4 -0
  49. package/dist/utils/string-constants.js +6 -2
  50. package/dist/utils/string-constants.js.map +1 -1
  51. package/dist/utils/utils.d.ts +2 -4
  52. package/dist/utils/utils.js +4 -6
  53. package/dist/utils/utils.js.map +1 -1
  54. package/package.json +2 -2
  55. package/dist/type-merging/type-merging.js.map +0 -1
  56. /package/dist/{type-merging → schema-building}/type-merging.d.ts +0 -0
@@ -0,0 +1,600 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeInheritableDirectivesFromParentWithFieldsData = exports.getUnionNodeByData = exports.getSchemaNodeByData = exports.getScalarNodeByData = exports.getParentWithFieldsNodeByData = exports.getInputObjectNodeByData = exports.getEnumNodeByData = exports.extractImplementedInterfaceTypeNames = exports.convertKindForExtension = exports.isTypeNameRootType = exports.upsertUnionExtensionDataByNode = exports.upsertUnionDefinitionDataByNode = exports.extractUniqueUnionMembers = exports.upsertScalarExtensionDataByNode = exports.upsertScalarDefinitionDataByNode = exports.upsertObjectDefinitionDataByNode = exports.upsertInterfaceDefinitionDataByNode = exports.upsertInputValueDataByNode = exports.upsertInputObjectExtensionDataByNode = exports.upsertInputObjectDefinitionDataByNode = exports.upsertExtensionWithFieldsDataByNode = exports.upsertFieldDataByNode = exports.addInheritedDirectivesToFieldData = exports.upsertEnumValueDataByNode = exports.upsertEnumExtensionDataByNode = exports.upsertEnumDefinitionDataByNode = exports.upsertArgumentDataByNode = exports.extractArguments = exports.extractDirectives = exports.getDirectiveValidationErrors = exports.getDefinedArgumentsForDirective = exports.isNodeExternalOrShareable = void 0;
4
+ const graphql_1 = require("graphql");
5
+ const ast_1 = require("./ast");
6
+ const utils_1 = require("../ast/utils");
7
+ const errors_1 = require("../errors/errors");
8
+ const string_constants_1 = require("../utils/string-constants");
9
+ const type_merging_1 = require("./type-merging");
10
+ const utils_2 = require("../normalization/utils");
11
+ const utils_3 = require("../utils/utils");
12
+ const constants_1 = require("../utils/constants");
13
+ function isNodeExternalOrShareable(node, areAllFieldsShareable, directivesByDirectiveName) {
14
+ const result = {
15
+ isExternal: directivesByDirectiveName.has(string_constants_1.EXTERNAL),
16
+ isShareable: areAllFieldsShareable || directivesByDirectiveName.has(string_constants_1.SHAREABLE),
17
+ };
18
+ if (!node.directives?.length) {
19
+ return result;
20
+ }
21
+ for (const directiveNode of node.directives) {
22
+ const directiveName = directiveNode.name.value;
23
+ if (directiveName === string_constants_1.EXTERNAL) {
24
+ result.isExternal = true;
25
+ continue;
26
+ }
27
+ if (directiveName === string_constants_1.SHAREABLE) {
28
+ result.isShareable = true;
29
+ }
30
+ }
31
+ return result;
32
+ }
33
+ exports.isNodeExternalOrShareable = isNodeExternalOrShareable;
34
+ function getDefinedArgumentsForDirective(directiveNode, argumentTypeNodeByArgumentName, requiredArguments, hostPath, errorMessages) {
35
+ const directiveArguments = directiveNode.arguments || [];
36
+ const directiveName = directiveNode.name.value;
37
+ const definedArguments = new Set();
38
+ const handledDuplicateArguments = new Set();
39
+ for (const argument of directiveArguments) {
40
+ const argumentName = argument.name.value;
41
+ // If an argument is observed more than once, it is a duplication error.
42
+ // However, the error should only propagate once.
43
+ if (definedArguments.has(argumentName)) {
44
+ if (!handledDuplicateArguments.has(argumentName)) {
45
+ handledDuplicateArguments.add(argumentName);
46
+ errorMessages.push((0, errors_1.duplicateDirectiveArgumentDefinitionErrorMessage)(directiveName, hostPath, argumentName));
47
+ }
48
+ continue;
49
+ }
50
+ const argumentTypeNode = argumentTypeNodeByArgumentName.get(argumentName);
51
+ if (!argumentTypeNode) {
52
+ errorMessages.push((0, errors_1.unexpectedDirectiveArgumentErrorMessage)(directiveName, argumentName));
53
+ continue;
54
+ }
55
+ // TODO validate argument values
56
+ // if (argumentTypeNode) {
57
+ // errorMessages.push(invalidDirectiveArgumentTypeErrorMessage(
58
+ // requiredArguments.has(directiveName), argumentName, argumentTypeNode, argument.value.kind),
59
+ // );
60
+ // }
61
+ definedArguments.add(argumentName);
62
+ }
63
+ return definedArguments;
64
+ }
65
+ exports.getDefinedArgumentsForDirective = getDefinedArgumentsForDirective;
66
+ function getDirectiveValidationErrors(directiveNode, hostKind, directivesByDirectiveName, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, hostPath, isArgument = false) {
67
+ const directiveName = directiveNode.name.value;
68
+ const directiveDefinition = directiveDefinitionByDirectiveName.get(directiveName) ||
69
+ constants_1.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.get(directiveName);
70
+ const errorMessages = [];
71
+ if (!directiveDefinition) {
72
+ errorMessages.push((0, errors_1.undefinedDirectiveErrorMessage)(directiveName, hostPath));
73
+ return errorMessages;
74
+ }
75
+ const argumentTypeNodeByArgumentName = new Map();
76
+ const requiredArguments = new Set();
77
+ (0, utils_2.getDirectiveDefinitionArgumentSets)(directiveDefinition.arguments || [], argumentTypeNodeByArgumentName, requiredArguments);
78
+ if (!(0, utils_2.areNodeKindAndDirectiveLocationCompatible)(hostKind, directiveDefinition, isArgument)) {
79
+ errorMessages.push((0, errors_1.invalidDirectiveLocationErrorMessage)(hostPath, isArgument ? graphql_1.Kind.ARGUMENT : hostKind, directiveName));
80
+ }
81
+ if (!directiveDefinition.repeatable && directivesByDirectiveName.get(directiveName)) {
82
+ const handledRepeatedDirectives = handledRepeatedDirectivesByHostPath.get(hostPath);
83
+ // Add the directive name to the existing set (if other invalid repeated directives exist) or a new set
84
+ // If the directive name exists as a value on the host path key, the repeatable error has been handled
85
+ if (!handledRepeatedDirectives) {
86
+ handledRepeatedDirectivesByHostPath.set(hostPath, new Set([directiveName]));
87
+ }
88
+ else if (!handledRepeatedDirectives.has(directiveName)) {
89
+ handledRepeatedDirectives.add(directiveName);
90
+ errorMessages.push((0, errors_1.invalidRepeatedDirectiveErrorMessage)(directiveName, hostPath));
91
+ }
92
+ }
93
+ if (!directiveDefinition.arguments?.length) {
94
+ if (directiveNode.arguments?.length) {
95
+ errorMessages.push((0, errors_1.unexpectedDirectiveArgumentsErrorMessage)(directiveNode, hostPath));
96
+ }
97
+ return errorMessages;
98
+ }
99
+ if (!directiveNode.arguments?.length) {
100
+ if (requiredArguments.size > 0) {
101
+ errorMessages.push((0, errors_1.undefinedRequiredArgumentsErrorMessage)(directiveName, hostPath, [...requiredArguments]));
102
+ }
103
+ return errorMessages;
104
+ }
105
+ const definedArguments = getDefinedArgumentsForDirective(directiveNode, argumentTypeNodeByArgumentName, requiredArguments, hostPath, errorMessages);
106
+ const missingRequiredArguments = (0, utils_3.getEntriesNotInHashSet)(requiredArguments, definedArguments);
107
+ if (missingRequiredArguments.length > 0) {
108
+ errorMessages.push((0, errors_1.undefinedRequiredArgumentsErrorMessage)(directiveName, hostPath, [...requiredArguments], missingRequiredArguments));
109
+ }
110
+ return errorMessages;
111
+ }
112
+ exports.getDirectiveValidationErrors = getDirectiveValidationErrors;
113
+ function extractDirectives(node, directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, hostPath, isArgument = false) {
114
+ if (!node.directives) {
115
+ return directivesByDirectiveName;
116
+ }
117
+ const entityKeys = new Set();
118
+ for (const directiveNode of node.directives) {
119
+ const errorMessages = getDirectiveValidationErrors(directiveNode, node.kind, directivesByDirectiveName, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, hostPath, isArgument);
120
+ const directiveName = directiveNode.name.value;
121
+ if (errorMessages.length > 0) {
122
+ errors.push((0, errors_1.invalidDirectiveError)(directiveName, hostPath, errorMessages));
123
+ continue;
124
+ }
125
+ if (string_constants_1.IGNORED_PARENT_DIRECTIVES.has(directiveName)) {
126
+ continue;
127
+ }
128
+ if (directiveName === string_constants_1.KEY) {
129
+ // The argument was validated earlier
130
+ const entityKey = directiveNode.arguments[0].value.value;
131
+ if (entityKeys.has(entityKey)) {
132
+ continue;
133
+ }
134
+ entityKeys.add(entityKey);
135
+ }
136
+ const existingDirectives = directivesByDirectiveName.get(directiveName);
137
+ existingDirectives
138
+ ? existingDirectives.push(directiveNode)
139
+ : directivesByDirectiveName.set(directiveName, [directiveNode]);
140
+ }
141
+ return directivesByDirectiveName;
142
+ }
143
+ exports.extractDirectives = extractDirectives;
144
+ function extractArguments(argumentDataByArgumentName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, parentsWithChildArguments, parentTypeName, subgraphName) {
145
+ if (!node.arguments?.length) {
146
+ return argumentDataByArgumentName;
147
+ }
148
+ const fieldName = node.name.value;
149
+ const fieldPath = `${parentTypeName}.${fieldName}`;
150
+ parentsWithChildArguments.add(parentTypeName);
151
+ const duplicatedArguments = new Set();
152
+ for (const argumentNode of node.arguments) {
153
+ const argumentName = argumentNode.name.value;
154
+ if (argumentDataByArgumentName.has(argumentName)) {
155
+ duplicatedArguments.add(argumentName);
156
+ continue;
157
+ }
158
+ upsertArgumentDataByNode(argumentDataByArgumentName, argumentNode, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, parentTypeName, fieldName, subgraphName);
159
+ }
160
+ if (duplicatedArguments.size > 0) {
161
+ errors.push((0, errors_1.duplicateArgumentsError)(fieldPath, [...duplicatedArguments]));
162
+ }
163
+ return argumentDataByArgumentName;
164
+ }
165
+ exports.extractArguments = extractArguments;
166
+ function upsertArgumentDataByNode(argumentDataByArgumentName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, parentTypeName, fieldName, subgraphName) {
167
+ const name = node.name.value;
168
+ const hostPath = `${parentTypeName}.${fieldName}`;
169
+ argumentDataByArgumentName.set(name, {
170
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, `${hostPath}(${name}: ...)`, true),
171
+ name,
172
+ node: (0, ast_1.getMutableInputValueNode)(node, parentTypeName, fieldName),
173
+ requiredSubgraphNames: new Set([subgraphName]),
174
+ subgraphNames: new Set([subgraphName]),
175
+ type: (0, ast_1.getMutableTypeNode)(node.type, hostPath),
176
+ defaultValue: node.defaultValue,
177
+ description: (0, utils_1.formatDescription)(node.description),
178
+ });
179
+ }
180
+ exports.upsertArgumentDataByNode = upsertArgumentDataByNode;
181
+ function upsertEnumDefinitionDataByNode(parentDefinitionDataByTypeName, node, directivesByDirectiveName) {
182
+ const typeName = node.name.value;
183
+ parentDefinitionDataByTypeName.set(typeName, {
184
+ appearances: 1,
185
+ directivesByDirectiveName,
186
+ kind: node.kind,
187
+ node: (0, ast_1.getMutableEnumNode)(node),
188
+ typeName,
189
+ enumValueDataByValueName: new Map(),
190
+ description: (0, utils_1.formatDescription)(node.description),
191
+ });
192
+ }
193
+ exports.upsertEnumDefinitionDataByNode = upsertEnumDefinitionDataByNode;
194
+ function upsertEnumExtensionDataByNode(parentExtensionDataByTypeName, node, directivesByDirectiveName) {
195
+ const typeName = node.name.value;
196
+ parentExtensionDataByTypeName.set(typeName, {
197
+ directivesByDirectiveName,
198
+ enumValueDataByValueName: new Map(),
199
+ kind: node.kind,
200
+ typeName,
201
+ });
202
+ }
203
+ exports.upsertEnumExtensionDataByNode = upsertEnumExtensionDataByNode;
204
+ function upsertEnumValueDataByNode(enumValueDataByValueName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, parentTypeName) {
205
+ const name = node.name.value;
206
+ enumValueDataByValueName.set(name, {
207
+ appearances: 1,
208
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, `${parentTypeName}.${name}`),
209
+ name,
210
+ node: (0, ast_1.getMutableEnumValueNode)(node),
211
+ parentTypeName,
212
+ description: (0, utils_1.formatDescription)(node.description),
213
+ });
214
+ }
215
+ exports.upsertEnumValueDataByNode = upsertEnumValueDataByNode;
216
+ function addInheritedDirectivesToFieldData(parentDirectivesByDirectiveName, fieldDirectivesByDirectiveName) {
217
+ for (const directiveName of constants_1.INHERITABLE_DIRECTIVE_NAMES) {
218
+ if (parentDirectivesByDirectiveName.get(directiveName)) {
219
+ (0, utils_3.getValueOrDefault)(fieldDirectivesByDirectiveName, directiveName, () => [(0, utils_3.generateSimpleDirective)(directiveName)]);
220
+ }
221
+ }
222
+ return fieldDirectivesByDirectiveName;
223
+ }
224
+ exports.addInheritedDirectivesToFieldData = addInheritedDirectivesToFieldData;
225
+ function upsertFieldDataByNode(fieldDataByFieldName, node, errors, argumentDataByArgumentName, directivesByDirectiveName, parentTypeName, subgraphName, isSubgraphVersionTwo) {
226
+ const name = node.name.value;
227
+ const fieldPath = `${parentTypeName}.${name}`;
228
+ const isNodeExternalOrShareableResult = isNodeExternalOrShareable(node, !isSubgraphVersionTwo, directivesByDirectiveName);
229
+ const fieldData = {
230
+ argumentDataByArgumentName: argumentDataByArgumentName,
231
+ isExternalBySubgraphName: new Map([[subgraphName, isNodeExternalOrShareableResult.isExternal]]),
232
+ isShareableBySubgraphName: new Map([[subgraphName, isNodeExternalOrShareableResult.isShareable]]),
233
+ node: (0, ast_1.getMutableFieldNode)(node, parentTypeName),
234
+ name,
235
+ namedTypeName: (0, type_merging_1.getNamedTypeForChild)(fieldPath, node.type),
236
+ parentTypeName,
237
+ subgraphNames: new Set([subgraphName]),
238
+ directivesByDirectiveName,
239
+ description: (0, utils_1.formatDescription)(node.description),
240
+ };
241
+ fieldDataByFieldName.set(name, fieldData);
242
+ return fieldData;
243
+ }
244
+ exports.upsertFieldDataByNode = upsertFieldDataByNode;
245
+ function upsertExtensionWithFieldsDataByNode(parentExtensionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, isEntity) {
246
+ const typeName = node.name.value;
247
+ const kind = convertKindForExtension(node);
248
+ switch (kind) {
249
+ case graphql_1.Kind.INTERFACE_TYPE_EXTENSION:
250
+ parentExtensionDataByTypeName.set(typeName, {
251
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
252
+ fieldDataByFieldName: new Map(),
253
+ implementedInterfaceTypeNames: extractImplementedInterfaceTypeNames(node, new Set(), errors),
254
+ isEntity,
255
+ kind,
256
+ typeName,
257
+ });
258
+ return;
259
+ default:
260
+ parentExtensionDataByTypeName.set(typeName, {
261
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
262
+ fieldDataByFieldName: new Map(),
263
+ implementedInterfaceTypeNames: extractImplementedInterfaceTypeNames(node, new Set(), errors),
264
+ isEntity,
265
+ kind,
266
+ node: (0, ast_1.getMutableObjectExtensionNode)(node),
267
+ typeName,
268
+ });
269
+ }
270
+ }
271
+ exports.upsertExtensionWithFieldsDataByNode = upsertExtensionWithFieldsDataByNode;
272
+ function upsertInputObjectDefinitionDataByNode(parentDefinitionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath) {
273
+ const typeName = node.name.value;
274
+ parentDefinitionDataByTypeName.set(typeName, {
275
+ appearances: 1,
276
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
277
+ inputValueDataByValueName: new Map(),
278
+ kind: node.kind,
279
+ node: (0, ast_1.getMutableInputObjectNode)(node),
280
+ typeName,
281
+ description: (0, utils_1.formatDescription)(node.description),
282
+ });
283
+ }
284
+ exports.upsertInputObjectDefinitionDataByNode = upsertInputObjectDefinitionDataByNode;
285
+ function upsertInputObjectExtensionDataByNode(parentExtensionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath) {
286
+ const typeName = node.name.value;
287
+ parentExtensionDataByTypeName.set(typeName, {
288
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
289
+ inputValueDataByValueName: new Map(),
290
+ kind: node.kind,
291
+ typeName,
292
+ });
293
+ }
294
+ exports.upsertInputObjectExtensionDataByNode = upsertInputObjectExtensionDataByNode;
295
+ function upsertInputValueDataByNode(inputValueDataByValueName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, parentTypeName) {
296
+ const name = node.name.value;
297
+ inputValueDataByValueName.set(name, {
298
+ appearances: 1,
299
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, `${parentTypeName}.${name}`),
300
+ name,
301
+ node: (0, ast_1.getMutableInputValueNode)(node, parentTypeName, name),
302
+ parentTypeName,
303
+ description: (0, utils_1.formatDescription)(node.description),
304
+ });
305
+ }
306
+ exports.upsertInputValueDataByNode = upsertInputValueDataByNode;
307
+ function upsertInterfaceDefinitionDataByNode(parentDefinitionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, isEntity, subgraphName) {
308
+ const typeName = node.name.value;
309
+ parentDefinitionDataByTypeName.set(typeName, {
310
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
311
+ fieldDataByFieldName: new Map(),
312
+ isEntity,
313
+ implementedInterfaceTypeNames: extractImplementedInterfaceTypeNames(node, new Set(), errors),
314
+ kind: node.kind,
315
+ node: (0, ast_1.getMutableInterfaceNode)(node),
316
+ subgraphNames: new Set([subgraphName]),
317
+ typeName,
318
+ description: (0, utils_1.formatDescription)(node.description),
319
+ });
320
+ }
321
+ exports.upsertInterfaceDefinitionDataByNode = upsertInterfaceDefinitionDataByNode;
322
+ function upsertObjectDefinitionDataByNode(parentDefinitionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, isEntity, isRootType, subgraphName) {
323
+ const typeName = node.name.value;
324
+ parentDefinitionDataByTypeName.set(typeName, {
325
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
326
+ fieldDataByFieldName: new Map(),
327
+ isEntity,
328
+ isRootType,
329
+ implementedInterfaceTypeNames: extractImplementedInterfaceTypeNames(node, new Set(), errors),
330
+ kind: node.kind,
331
+ node: (0, ast_1.getMutableObjectNode)(node),
332
+ subgraphNames: new Set([subgraphName]),
333
+ typeName,
334
+ description: (0, utils_1.formatDescription)(node.description),
335
+ });
336
+ }
337
+ exports.upsertObjectDefinitionDataByNode = upsertObjectDefinitionDataByNode;
338
+ function upsertScalarDefinitionDataByNode(parentDefinitionDataByTypeName, node, directivesByDirectiveName) {
339
+ const typeName = node.name.value;
340
+ parentDefinitionDataByTypeName.set(typeName, {
341
+ directivesByDirectiveName,
342
+ kind: node.kind,
343
+ node: (0, ast_1.getMutableScalarNode)(node),
344
+ typeName,
345
+ description: (0, utils_1.formatDescription)(node.description),
346
+ });
347
+ }
348
+ exports.upsertScalarDefinitionDataByNode = upsertScalarDefinitionDataByNode;
349
+ function upsertScalarExtensionDataByNode(parentExtensionDataByTypeName, node, directivesByDirectiveName) {
350
+ const typeName = node.name.value;
351
+ parentExtensionDataByTypeName.set(typeName, {
352
+ directivesByDirectiveName,
353
+ kind: node.kind,
354
+ typeName,
355
+ });
356
+ }
357
+ exports.upsertScalarExtensionDataByNode = upsertScalarExtensionDataByNode;
358
+ function extractUniqueUnionMembers(members, membersByMemberTypeName, errors, unionTypeName, abstractToConcreteTypeNames, referencedTypeNames) {
359
+ for (const member of members) {
360
+ const memberTypeName = member.name.value;
361
+ if (membersByMemberTypeName.has(memberTypeName)) {
362
+ errors.push((0, errors_1.duplicateUnionMemberError)(memberTypeName, unionTypeName));
363
+ continue;
364
+ }
365
+ const concreteTypes = abstractToConcreteTypeNames.get(unionTypeName);
366
+ if (concreteTypes) {
367
+ concreteTypes.add(memberTypeName);
368
+ }
369
+ else {
370
+ abstractToConcreteTypeNames.set(unionTypeName, new Set([memberTypeName]));
371
+ }
372
+ if (!constants_1.BASE_SCALARS.has(memberTypeName)) {
373
+ referencedTypeNames.add(memberTypeName);
374
+ }
375
+ membersByMemberTypeName.set(memberTypeName, member);
376
+ }
377
+ return membersByMemberTypeName;
378
+ }
379
+ exports.extractUniqueUnionMembers = extractUniqueUnionMembers;
380
+ function upsertUnionDefinitionDataByNode(parentDefinitionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, abstractToConcreteTypeNames, referencedTypeNames) {
381
+ const typeName = node.name.value;
382
+ if (!node.types?.length) {
383
+ errors.push((0, errors_1.noDefinedUnionMembersError)(typeName));
384
+ return;
385
+ }
386
+ parentDefinitionDataByTypeName.set(typeName, {
387
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
388
+ kind: node.kind,
389
+ memberByMemberTypeName: extractUniqueUnionMembers(node.types, new Map(), errors, typeName, abstractToConcreteTypeNames, referencedTypeNames),
390
+ node: (0, ast_1.getMutableUnionNode)(node),
391
+ typeName,
392
+ description: (0, utils_1.formatDescription)(node.description),
393
+ });
394
+ }
395
+ exports.upsertUnionDefinitionDataByNode = upsertUnionDefinitionDataByNode;
396
+ function upsertUnionExtensionDataByNode(parentExtensionDataByTypeName, node, errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, abstractToConcreteTypeNames, referencedTypeNames) {
397
+ const typeName = node.name.value;
398
+ parentExtensionDataByTypeName.set(typeName, {
399
+ directivesByDirectiveName: extractDirectives(node, new Map(), errors, directiveDefinitionByDirectiveName, handledRepeatedDirectivesByHostPath, typeName),
400
+ kind: node.kind,
401
+ memberByMemberTypeName: extractUniqueUnionMembers(
402
+ // Undefined or empty node.types is handled earlier
403
+ node.types, new Map(), errors, typeName, abstractToConcreteTypeNames, referencedTypeNames),
404
+ typeName,
405
+ });
406
+ }
407
+ exports.upsertUnionExtensionDataByNode = upsertUnionExtensionDataByNode;
408
+ function isTypeNameRootType(typeName, operationByTypeName) {
409
+ return string_constants_1.ROOT_TYPES.has(typeName) || operationByTypeName.has(typeName);
410
+ }
411
+ exports.isTypeNameRootType = isTypeNameRootType;
412
+ function convertKindForExtension(node) {
413
+ switch (node.kind) {
414
+ case graphql_1.Kind.INTERFACE_TYPE_DEFINITION:
415
+ return graphql_1.Kind.INTERFACE_TYPE_EXTENSION;
416
+ case graphql_1.Kind.OBJECT_TYPE_DEFINITION:
417
+ return graphql_1.Kind.OBJECT_TYPE_EXTENSION;
418
+ default:
419
+ return node.kind;
420
+ }
421
+ }
422
+ exports.convertKindForExtension = convertKindForExtension;
423
+ function extractImplementedInterfaceTypeNames(node, implementedInterfaceTypeNames, errors) {
424
+ if (!node.interfaces) {
425
+ return implementedInterfaceTypeNames;
426
+ }
427
+ const parentTypeName = node.name.value;
428
+ for (const implementedInterface of node.interfaces) {
429
+ const interfaceTypeName = implementedInterface.name.value;
430
+ if (errors && implementedInterfaceTypeNames.has(interfaceTypeName)) {
431
+ errors.push((0, errors_1.duplicateInterfaceError)(interfaceTypeName, parentTypeName));
432
+ continue;
433
+ }
434
+ implementedInterfaceTypeNames.add(interfaceTypeName);
435
+ }
436
+ return implementedInterfaceTypeNames;
437
+ }
438
+ exports.extractImplementedInterfaceTypeNames = extractImplementedInterfaceTypeNames;
439
+ function addExtensionDirectivesToDefinition(directivesByDirectiveName, parentExtensionData) {
440
+ if (!parentExtensionData) {
441
+ return;
442
+ }
443
+ for (const [directiveName, directives] of parentExtensionData.directivesByDirectiveName) {
444
+ const existingDirectives = directivesByDirectiveName.get(directiveName);
445
+ if (existingDirectives) {
446
+ existingDirectives.push(...directives);
447
+ continue;
448
+ }
449
+ directivesByDirectiveName.set(directiveName, [...directives]);
450
+ }
451
+ }
452
+ function addAuthorizationDirectivesToFieldData(authorizationDataByParentTypeName, fieldData) {
453
+ const authorizationData = authorizationDataByParentTypeName.get(fieldData.parentTypeName);
454
+ if (!authorizationData) {
455
+ return;
456
+ }
457
+ const fieldAuthorizationData = authorizationData.fieldAuthorizationDataByFieldName.get(fieldData.name);
458
+ if (!fieldAuthorizationData) {
459
+ return;
460
+ }
461
+ if (fieldAuthorizationData.requiresAuthentication) {
462
+ const authenticatedDirective = (0, utils_3.generateSimpleDirective)(string_constants_1.AUTHENTICATED);
463
+ fieldData.directivesByDirectiveName.set(string_constants_1.AUTHENTICATED, [authenticatedDirective]);
464
+ }
465
+ if (fieldAuthorizationData.requiredScopes.length > 0) {
466
+ const requiresScopesDirective = (0, utils_3.generateRequiresScopesDirective)(fieldAuthorizationData.requiredScopes);
467
+ fieldData.directivesByDirectiveName.set(string_constants_1.REQUIRES_SCOPES, [requiresScopesDirective]);
468
+ }
469
+ }
470
+ function propagateFieldDataArguments(fieldData) {
471
+ for (const argumentData of fieldData.argumentDataByArgumentName.values()) {
472
+ // First propagate the argument's directives
473
+ for (const directiveNodes of argumentData.directivesByDirectiveName.values()) {
474
+ argumentData.node.directives.push(...directiveNodes);
475
+ }
476
+ fieldData.node.arguments.push(argumentData.node);
477
+ }
478
+ }
479
+ function childMapToValueArray(map, authorizationDataByParentTypeName) {
480
+ const valueArray = [];
481
+ for (const childData of map.values()) {
482
+ if (childData.node.kind === graphql_1.Kind.FIELD_DEFINITION) {
483
+ const fieldData = childData;
484
+ addAuthorizationDirectivesToFieldData(authorizationDataByParentTypeName, fieldData);
485
+ propagateFieldDataArguments(fieldData);
486
+ }
487
+ for (const directiveNodes of childData.directivesByDirectiveName.values()) {
488
+ childData.node.directives.push(...directiveNodes);
489
+ }
490
+ valueArray.push(childData.node);
491
+ }
492
+ return valueArray;
493
+ }
494
+ function getValidFlattenedDirectiveArray(directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, hostPath) {
495
+ const flattenedArray = [];
496
+ for (const [directiveName, directiveNodes] of directivesByDirectiveName) {
497
+ const directiveDefinition = directiveDefinitionByDirectiveName.get(directiveName) ||
498
+ constants_1.V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME.get(directiveName);
499
+ if (!directiveDefinition) {
500
+ continue;
501
+ }
502
+ if (!directiveDefinition.repeatable && directiveNodes.length > 1) {
503
+ errors.push((0, errors_1.invalidDirectiveError)(directiveName, hostPath, [(0, errors_1.invalidRepeatedDirectiveErrorMessage)(directiveName, hostPath)]));
504
+ continue;
505
+ }
506
+ if (directiveName !== string_constants_1.KEY) {
507
+ flattenedArray.push(...directiveNodes);
508
+ continue;
509
+ }
510
+ const normalizedDirectiveNodes = [];
511
+ const entityKeys = new Set();
512
+ const errorMessages = [];
513
+ for (const keyDirectiveNode of directiveNodes) {
514
+ const directiveValue = keyDirectiveNode.arguments[0].value;
515
+ if (directiveValue.kind !== graphql_1.Kind.STRING) {
516
+ errorMessages.push((0, errors_1.invalidKeyDirectiveArgumentErrorMessage)(directiveValue.kind));
517
+ continue;
518
+ }
519
+ const entityKey = directiveValue.value;
520
+ if (entityKeys.has(entityKey)) {
521
+ continue;
522
+ }
523
+ entityKeys.add(entityKey);
524
+ flattenedArray.push(keyDirectiveNode);
525
+ normalizedDirectiveNodes.push(keyDirectiveNode);
526
+ }
527
+ directivesByDirectiveName.set(directiveName, normalizedDirectiveNodes);
528
+ if (errorMessages.length > 0) {
529
+ errors.push((0, errors_1.invalidDirectiveError)(directiveName, hostPath, errorMessages));
530
+ }
531
+ }
532
+ return flattenedArray;
533
+ }
534
+ function mergeUniqueUnionMembers(unionDefinitionData, errors, unionExtensionData) {
535
+ if (!unionExtensionData) {
536
+ return;
537
+ }
538
+ const definitionMembers = unionDefinitionData.memberByMemberTypeName;
539
+ const extensionMembers = unionExtensionData.memberByMemberTypeName;
540
+ const typeName = unionDefinitionData.typeName;
541
+ for (const [memberName, namedTypeNode] of extensionMembers) {
542
+ if (!definitionMembers.has(memberName)) {
543
+ definitionMembers.set(memberName, namedTypeNode);
544
+ continue;
545
+ }
546
+ errors.push((0, errors_1.duplicateUnionMemberExtensionError)(memberName, typeName));
547
+ }
548
+ }
549
+ function getEnumNodeByData(enumDefinitionData, errors, directiveDefinitionByDirectiveName, authorizationDataByParentTypeName, enumExtensionData) {
550
+ addExtensionDirectivesToDefinition(enumDefinitionData.directivesByDirectiveName, enumExtensionData);
551
+ enumDefinitionData.node.directives = getValidFlattenedDirectiveArray(enumDefinitionData.directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, enumDefinitionData.typeName);
552
+ enumDefinitionData.node.values = childMapToValueArray(enumDefinitionData.enumValueDataByValueName, authorizationDataByParentTypeName);
553
+ return enumDefinitionData.node;
554
+ }
555
+ exports.getEnumNodeByData = getEnumNodeByData;
556
+ function getInputObjectNodeByData(inputObjectDefinitionData, errors, directiveDefinitionByDirectiveName, authorizationDataByParentTypeName, inputObjectExtensionData) {
557
+ addExtensionDirectivesToDefinition(inputObjectDefinitionData.directivesByDirectiveName, inputObjectExtensionData);
558
+ inputObjectDefinitionData.node.directives = getValidFlattenedDirectiveArray(inputObjectDefinitionData.directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, inputObjectDefinitionData.typeName);
559
+ inputObjectDefinitionData.node.fields = childMapToValueArray(inputObjectDefinitionData.inputValueDataByValueName, authorizationDataByParentTypeName);
560
+ return inputObjectDefinitionData.node;
561
+ }
562
+ exports.getInputObjectNodeByData = getInputObjectNodeByData;
563
+ function getParentWithFieldsNodeByData(parentWithFieldsData, errors, directiveDefinitionByDirectiveName, authorizationDataByParentTypeName, parentExtensionWithFieldsData) {
564
+ addExtensionDirectivesToDefinition(parentWithFieldsData.directivesByDirectiveName, parentExtensionWithFieldsData);
565
+ parentWithFieldsData.node.directives = getValidFlattenedDirectiveArray(parentWithFieldsData.directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, parentWithFieldsData.typeName);
566
+ parentWithFieldsData.node.fields = childMapToValueArray(parentWithFieldsData.fieldDataByFieldName, authorizationDataByParentTypeName);
567
+ parentWithFieldsData.node.interfaces = (0, utils_1.setToNamedTypeNodeArray)(parentWithFieldsData.implementedInterfaceTypeNames);
568
+ return parentWithFieldsData.node;
569
+ }
570
+ exports.getParentWithFieldsNodeByData = getParentWithFieldsNodeByData;
571
+ function getScalarNodeByData(scalarDefinitionData, errors, directiveDefinitionByDirectiveName, scalarExtensionData) {
572
+ addExtensionDirectivesToDefinition(scalarDefinitionData.directivesByDirectiveName, scalarExtensionData);
573
+ scalarDefinitionData.node.directives = getValidFlattenedDirectiveArray(scalarDefinitionData.directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, scalarDefinitionData.typeName);
574
+ return scalarDefinitionData.node;
575
+ }
576
+ exports.getScalarNodeByData = getScalarNodeByData;
577
+ function getSchemaNodeByData(schemaData, errors, directiveDefinitionByDirectiveName) {
578
+ return {
579
+ description: schemaData.description,
580
+ directives: getValidFlattenedDirectiveArray(schemaData.directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, schemaData.typeName),
581
+ kind: schemaData.kind,
582
+ operationTypes: (0, utils_3.mapToArrayOfValues)(schemaData.operationTypes),
583
+ };
584
+ }
585
+ exports.getSchemaNodeByData = getSchemaNodeByData;
586
+ function getUnionNodeByData(unionDefinitionData, errors, directiveDefinitionByDirectiveName, unionExtensionData) {
587
+ mergeUniqueUnionMembers(unionDefinitionData, errors, unionExtensionData);
588
+ addExtensionDirectivesToDefinition(unionDefinitionData.directivesByDirectiveName, unionExtensionData);
589
+ unionDefinitionData.node.directives = getValidFlattenedDirectiveArray(unionDefinitionData.directivesByDirectiveName, errors, directiveDefinitionByDirectiveName, unionDefinitionData.typeName);
590
+ unionDefinitionData.node.types = (0, utils_3.mapToArrayOfValues)(unionDefinitionData.memberByMemberTypeName);
591
+ return unionDefinitionData.node;
592
+ }
593
+ exports.getUnionNodeByData = getUnionNodeByData;
594
+ function removeInheritableDirectivesFromParentWithFieldsData(parentData) {
595
+ for (const directiveName of constants_1.INHERITABLE_DIRECTIVE_NAMES) {
596
+ parentData.directivesByDirectiveName.delete(directiveName);
597
+ }
598
+ }
599
+ exports.removeInheritableDirectivesFromParentWithFieldsData = removeInheritableDirectivesFromParentWithFieldsData;
600
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/schema-building/utils.ts"],"names":[],"mappings":"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"}