@wundergraph/composition 0.47.1 → 0.47.2
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.
- package/dist/index.d.ts +7 -2
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/normalization/types.d.ts +3 -3
- package/dist/schema-building/ast.d.ts +1 -1
- package/dist/schema-building/utils.d.ts +7 -6
- package/dist/schema-building/utils.js +6 -37
- package/dist/schema-building/utils.js.map +1 -1
- package/dist/subgraph/types.d.ts +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/composition-version.js +1 -1
- package/dist/utils/params.d.ts +12 -0
- package/dist/utils/params.js +3 -0
- package/dist/utils/params.js.map +1 -0
- package/dist/utils/utils.d.ts +4 -2
- package/dist/utils/utils.js +12 -3
- package/dist/utils/utils.js.map +1 -1
- package/dist/v1/constants/constants.d.ts +7 -0
- package/dist/v1/constants/constants.js +60 -0
- package/dist/v1/constants/constants.js.map +1 -0
- package/dist/v1/constants/directive-definitions.d.ts +30 -0
- package/dist/v1/{utils/constants.js → constants/directive-definitions.js} +186 -454
- package/dist/v1/constants/directive-definitions.js.map +1 -0
- package/dist/v1/{utils/integer-constants.js → constants/integers.js} +1 -1
- package/dist/v1/constants/integers.js.map +1 -0
- package/dist/v1/constants/non-directive-definitions.d.ts +9 -0
- package/dist/v1/constants/non-directive-definitions.js +166 -0
- package/dist/v1/constants/non-directive-definitions.js.map +1 -0
- package/dist/v1/constants/strings.d.ts +11 -0
- package/dist/v1/constants/strings.js +82 -0
- package/dist/v1/constants/strings.js.map +1 -0
- package/dist/v1/constants/type-nodes.d.ts +3 -0
- package/dist/v1/constants/type-nodes.js +15 -0
- package/dist/v1/constants/type-nodes.js.map +1 -0
- package/dist/v1/federation/federation-factory.d.ts +11 -11
- package/dist/v1/federation/federation-factory.js +257 -147
- package/dist/v1/federation/federation-factory.js.map +1 -1
- package/dist/v1/federation/params.d.ts +7 -2
- package/dist/v1/federation/utils.js +1 -1
- package/dist/v1/federation/utils.js.map +1 -1
- package/dist/v1/normalization/directive-definition-data.js +55 -53
- package/dist/v1/normalization/directive-definition-data.js.map +1 -1
- package/dist/v1/normalization/normalization-factory.d.ts +9 -8
- package/dist/v1/normalization/normalization-factory.js +251 -239
- package/dist/v1/normalization/normalization-factory.js.map +1 -1
- package/dist/v1/normalization/types.d.ts +9 -1
- package/dist/v1/normalization/utils.js +1 -1
- package/dist/v1/normalization/utils.js.map +1 -1
- package/dist/v1/normalization/walkers.js +21 -38
- package/dist/v1/normalization/walkers.js.map +1 -1
- package/dist/v1/utils/utils.js +15 -6
- package/dist/v1/utils/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/v1/utils/constants.d.ts +0 -50
- package/dist/v1/utils/constants.js.map +0 -1
- package/dist/v1/utils/integer-constants.js.map +0 -1
- package/dist/v1/utils/string-constants.d.ts +0 -7
- package/dist/v1/utils/string-constants.js +0 -41
- package/dist/v1/utils/string-constants.js.map +0 -1
- /package/dist/v1/{utils/integer-constants.d.ts → constants/integers.d.ts} +0 -0
|
@@ -9,10 +9,10 @@ const ast_1 = require("../../schema-building/ast");
|
|
|
9
9
|
const utils_1 = require("../../ast/utils");
|
|
10
10
|
const errors_1 = require("../../errors/errors");
|
|
11
11
|
const utils_2 = require("./utils");
|
|
12
|
-
const
|
|
12
|
+
const strings_1 = require("../constants/strings");
|
|
13
13
|
const utils_3 = require("../utils/utils");
|
|
14
14
|
const merge_1 = require("@graphql-tools/merge");
|
|
15
|
-
const constants_1 = require("../
|
|
15
|
+
const constants_1 = require("../constants/constants");
|
|
16
16
|
const normalization_factory_1 = require("../normalization/normalization-factory");
|
|
17
17
|
const utils_4 = require("../normalization/utils");
|
|
18
18
|
const types_1 = require("../../schema-building/types");
|
|
@@ -20,15 +20,16 @@ const utils_5 = require("../../schema-building/utils");
|
|
|
20
20
|
const walkers_1 = require("./walkers");
|
|
21
21
|
const lodash_1 = require("lodash");
|
|
22
22
|
const type_merging_1 = require("../schema-building/type-merging");
|
|
23
|
-
const
|
|
23
|
+
const string_constants_1 = require("../../utils/string-constants");
|
|
24
24
|
const integer_constants_1 = require("../../utils/integer-constants");
|
|
25
25
|
const utils_6 = require("../../utils/utils");
|
|
26
26
|
const warnings_1 = require("../warnings/warnings");
|
|
27
|
+
const directive_definitions_1 = require("../constants/directive-definitions");
|
|
27
28
|
class FederationFactory {
|
|
28
29
|
authorizationDataByParentTypeName;
|
|
29
30
|
coordsByNamedTypeName = new Map();
|
|
30
31
|
disableResolvabilityValidation = false;
|
|
31
|
-
clientDefinitions = [
|
|
32
|
+
clientDefinitions = [];
|
|
32
33
|
currentSubgraphName = '';
|
|
33
34
|
concreteTypeNamesByAbstractTypeName;
|
|
34
35
|
subgraphNamesByNamedTypeNameByFieldCoords = new Map();
|
|
@@ -49,18 +50,17 @@ class FederationFactory {
|
|
|
49
50
|
parentDefinitionDataByTypeName = new Map();
|
|
50
51
|
parentTagDataByTypeName = new Map();
|
|
51
52
|
persistedDirectiveDefinitionByDirectiveName = new Map([
|
|
52
|
-
[
|
|
53
|
-
[
|
|
54
|
-
[
|
|
55
|
-
[
|
|
56
|
-
[
|
|
57
|
-
[
|
|
58
|
-
[
|
|
53
|
+
[string_constants_1.AUTHENTICATED, directive_definitions_1.AUTHENTICATED_DEFINITION],
|
|
54
|
+
[string_constants_1.DEPRECATED, directive_definitions_1.DEPRECATED_DEFINITION],
|
|
55
|
+
[string_constants_1.INACCESSIBLE, directive_definitions_1.INACCESSIBLE_DEFINITION],
|
|
56
|
+
[string_constants_1.ONE_OF, directive_definitions_1.ONE_OF_DEFINITION],
|
|
57
|
+
[string_constants_1.REQUIRES_SCOPES, directive_definitions_1.REQUIRES_SCOPES_DEFINITION],
|
|
58
|
+
[string_constants_1.SEMANTIC_NON_NULL, directive_definitions_1.SEMANTIC_NON_NULL_DEFINITION],
|
|
59
|
+
[string_constants_1.TAG, directive_definitions_1.TAG_DEFINITION],
|
|
59
60
|
]);
|
|
60
|
-
persistedDirectiveDefinitions = new Set([string_constants_2.AUTHENTICATED, string_constants_2.DEPRECATED, string_constants_2.INACCESSIBLE, string_constants_2.TAG, string_constants_2.REQUIRES_SCOPES]);
|
|
61
61
|
potentialPersistedDirectiveDefinitionDataByDirectiveName = new Map();
|
|
62
62
|
referencedPersistedDirectiveNames = new Set();
|
|
63
|
-
routerDefinitions = [
|
|
63
|
+
routerDefinitions = [];
|
|
64
64
|
subscriptionFilterDataByFieldPath = new Map();
|
|
65
65
|
tagNamesByCoords = new Map();
|
|
66
66
|
warnings;
|
|
@@ -75,6 +75,43 @@ class FederationFactory {
|
|
|
75
75
|
this.internalSubgraphBySubgraphName = internalSubgraphBySubgraphName;
|
|
76
76
|
this.warnings = warnings;
|
|
77
77
|
}
|
|
78
|
+
extractPersistedDirectives({ data, directivesByName }) {
|
|
79
|
+
for (const [directiveName, directiveNodes] of directivesByName) {
|
|
80
|
+
const definition = this.persistedDirectiveDefinitionByDirectiveName.get(directiveName);
|
|
81
|
+
// @authenticated and @requiresScopes are handled differently
|
|
82
|
+
if (!definition) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
this.referencedPersistedDirectiveNames.add(directiveName);
|
|
86
|
+
if (string_constants_1.AUTHORIZATION_DIRECTIVES.has(directiveName) || directiveNodes.length < 1) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
switch (directiveName) {
|
|
90
|
+
case string_constants_1.DEPRECATED: {
|
|
91
|
+
data.isDeprecated = true;
|
|
92
|
+
(0, utils_5.upsertDeprecatedDirective)(data, directiveNodes[0]);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case string_constants_1.TAG: {
|
|
96
|
+
(0, utils_5.upsertTagDirectives)(data, directiveNodes);
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
default: {
|
|
100
|
+
const existingDirectives = data.directivesByDirectiveName.get(directiveName);
|
|
101
|
+
if (!existingDirectives) {
|
|
102
|
+
data.directivesByDirectiveName.set(directiveName, [...directiveNodes]);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
// Only add one instance of certain directives.
|
|
106
|
+
if (string_constants_1.NON_REPEATABLE_PERSISTED_DIRECTIVES.has(directiveName)) {
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
existingDirectives.push(...directiveNodes);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return data;
|
|
114
|
+
}
|
|
78
115
|
getValidImplementedInterfaces(data) {
|
|
79
116
|
const interfaces = [];
|
|
80
117
|
if (data.implementedInterfaceTypeNames.size < 1) {
|
|
@@ -85,7 +122,7 @@ class FederationFactory {
|
|
|
85
122
|
const invalidImplementationTypeStringByTypeName = new Map();
|
|
86
123
|
for (const interfaceName of data.implementedInterfaceTypeNames) {
|
|
87
124
|
interfaces.push((0, utils_1.stringToNamedTypeNode)(interfaceName));
|
|
88
|
-
const implementationData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, interfaceName,
|
|
125
|
+
const implementationData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, interfaceName, string_constants_1.PARENT_DEFINITION_DATA);
|
|
89
126
|
if (implementationData.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION) {
|
|
90
127
|
invalidImplementationTypeStringByTypeName.set(implementationData.name, (0, utils_6.kindToNodeType)(implementationData.kind));
|
|
91
128
|
continue;
|
|
@@ -280,7 +317,7 @@ class FederationFactory {
|
|
|
280
317
|
}
|
|
281
318
|
generateTagData() {
|
|
282
319
|
for (const [path, tagNames] of this.tagNamesByCoords) {
|
|
283
|
-
const paths = path.split(
|
|
320
|
+
const paths = path.split(string_constants_1.PERIOD);
|
|
284
321
|
if (paths.length < 1) {
|
|
285
322
|
continue;
|
|
286
323
|
}
|
|
@@ -315,7 +352,10 @@ class FederationFactory {
|
|
|
315
352
|
upsertEnumValueData(enumValueDataByName, incomingData, isParentInaccessible) {
|
|
316
353
|
const existingData = enumValueDataByName.get(incomingData.name);
|
|
317
354
|
const targetData = existingData || this.copyEnumValueData(incomingData);
|
|
318
|
-
|
|
355
|
+
this.extractPersistedDirectives({
|
|
356
|
+
data: targetData.persistedDirectivesData,
|
|
357
|
+
directivesByName: incomingData.directivesByDirectiveName,
|
|
358
|
+
});
|
|
319
359
|
const isValueInaccessible = (0, utils_5.isNodeDataInaccessible)(incomingData);
|
|
320
360
|
if (isParentInaccessible || isValueInaccessible) {
|
|
321
361
|
this.inaccessibleCoords.add(targetData.federatedCoords);
|
|
@@ -328,13 +368,19 @@ class FederationFactory {
|
|
|
328
368
|
targetData.appearances += 1;
|
|
329
369
|
(0, utils_6.addNewObjectValueMapEntries)(incomingData.configureDescriptionDataBySubgraphName, targetData.configureDescriptionDataBySubgraphName);
|
|
330
370
|
(0, utils_5.setLongestDescription)(targetData, incomingData);
|
|
331
|
-
(0, utils_6.
|
|
371
|
+
(0, utils_6.addIterableToSet)({
|
|
372
|
+
source: incomingData.subgraphNames,
|
|
373
|
+
target: targetData.subgraphNames,
|
|
374
|
+
});
|
|
332
375
|
}
|
|
333
376
|
// To facilitate the splitting of tag paths, field arguments do not use the renamedPath property for tagNamesByPath
|
|
334
377
|
upsertInputValueData(inputValueDataByValueName, incomingData, parentCoords, isParentInaccessible) {
|
|
335
378
|
const existingData = inputValueDataByValueName.get(incomingData.name);
|
|
336
379
|
const targetData = existingData || this.copyInputValueData(incomingData);
|
|
337
|
-
|
|
380
|
+
this.extractPersistedDirectives({
|
|
381
|
+
data: targetData.persistedDirectivesData,
|
|
382
|
+
directivesByName: incomingData.directivesByDirectiveName,
|
|
383
|
+
});
|
|
338
384
|
this.recordTagNamesByCoords(targetData, `${parentCoords}.${targetData.name}`);
|
|
339
385
|
this.namedInputValueTypeNames.add(targetData.namedTypeName);
|
|
340
386
|
(0, utils_6.getValueOrDefault)(this.coordsByNamedTypeName, targetData.namedTypeName, () => new Set()).add(targetData.federatedCoords);
|
|
@@ -344,8 +390,14 @@ class FederationFactory {
|
|
|
344
390
|
}
|
|
345
391
|
(0, utils_6.addNewObjectValueMapEntries)(incomingData.configureDescriptionDataBySubgraphName, targetData.configureDescriptionDataBySubgraphName);
|
|
346
392
|
(0, utils_5.setLongestDescription)(targetData, incomingData);
|
|
347
|
-
(0, utils_6.
|
|
348
|
-
|
|
393
|
+
(0, utils_6.addIterableToSet)({
|
|
394
|
+
source: incomingData.requiredSubgraphNames,
|
|
395
|
+
target: targetData.requiredSubgraphNames,
|
|
396
|
+
});
|
|
397
|
+
(0, utils_6.addIterableToSet)({
|
|
398
|
+
source: incomingData.subgraphNames,
|
|
399
|
+
target: targetData.subgraphNames,
|
|
400
|
+
});
|
|
349
401
|
this.handleInputValueInaccessibility(isParentInaccessible, targetData, parentCoords);
|
|
350
402
|
// TODO refactor type merging
|
|
351
403
|
const mergeResult = (0, type_merging_1.getMostRestrictiveMergedTypeNode)(targetData.type, incomingData.type, targetData.originalCoords, this.errors);
|
|
@@ -382,7 +434,7 @@ class FederationFactory {
|
|
|
382
434
|
this.inaccessibleCoords.add(inputValueData.federatedCoords);
|
|
383
435
|
}
|
|
384
436
|
handleSubscriptionFilterDirective(incomingData, targetData) {
|
|
385
|
-
const subscriptionFilters = incomingData.directivesByDirectiveName.get(
|
|
437
|
+
const subscriptionFilters = incomingData.directivesByDirectiveName.get(string_constants_1.SUBSCRIPTION_FILTER);
|
|
386
438
|
if (!subscriptionFilters) {
|
|
387
439
|
return;
|
|
388
440
|
}
|
|
@@ -474,18 +526,21 @@ class FederationFactory {
|
|
|
474
526
|
if (!subgraphNamesByNamedTypeName) {
|
|
475
527
|
return;
|
|
476
528
|
}
|
|
477
|
-
(0, utils_6.
|
|
529
|
+
(0, utils_6.addIterableToSet)({
|
|
530
|
+
source: incomingData.subgraphNames,
|
|
531
|
+
target: (0, utils_6.getValueOrDefault)(subgraphNamesByNamedTypeName, incomingData.namedTypeName, () => new Set()),
|
|
532
|
+
});
|
|
478
533
|
}
|
|
479
534
|
upsertFieldData(fieldDataByFieldName, incomingData, isParentInaccessible) {
|
|
480
|
-
if (incomingData.directivesByDirectiveName.has(string_constants_2.SEMANTIC_NON_NULL)) {
|
|
481
|
-
this.referencedPersistedDirectiveNames.add(string_constants_2.SEMANTIC_NON_NULL);
|
|
482
|
-
}
|
|
483
535
|
const existingData = fieldDataByFieldName.get(incomingData.name);
|
|
484
536
|
const targetData = existingData || this.copyFieldData(incomingData, isParentInaccessible || (0, utils_5.isNodeDataInaccessible)(incomingData));
|
|
485
537
|
(0, utils_6.getValueOrDefault)(this.coordsByNamedTypeName, incomingData.namedTypeName, () => new Set()).add(targetData.federatedCoords);
|
|
486
538
|
this.namedOutputTypeNames.add(incomingData.namedTypeName);
|
|
487
539
|
this.handleSubscriptionFilterDirective(incomingData, targetData);
|
|
488
|
-
|
|
540
|
+
this.extractPersistedDirectives({
|
|
541
|
+
data: targetData.persistedDirectivesData,
|
|
542
|
+
directivesByName: incomingData.directivesByDirectiveName,
|
|
543
|
+
});
|
|
489
544
|
const isFieldInaccessible = isParentInaccessible || (0, utils_5.isNodeDataInaccessible)(targetData);
|
|
490
545
|
if (isFieldInaccessible) {
|
|
491
546
|
this.inaccessibleCoords.add(targetData.federatedCoords);
|
|
@@ -517,7 +572,10 @@ class FederationFactory {
|
|
|
517
572
|
}
|
|
518
573
|
}
|
|
519
574
|
}
|
|
520
|
-
(0, utils_6.
|
|
575
|
+
(0, utils_6.addIterableToSet)({
|
|
576
|
+
source: incomingData.subgraphNames,
|
|
577
|
+
target: (0, utils_6.getValueOrDefault)(subgraphNamesByNamedTypeName, incomingData.namedTypeName, () => new Set()),
|
|
578
|
+
});
|
|
521
579
|
}
|
|
522
580
|
else {
|
|
523
581
|
/* If the named types match but there has already been a disparity in the named type names returned by the
|
|
@@ -533,9 +591,18 @@ class FederationFactory {
|
|
|
533
591
|
(0, utils_5.setLongestDescription)(targetData, incomingData);
|
|
534
592
|
targetData.isInaccessible ||= incomingData.isInaccessible;
|
|
535
593
|
(0, utils_6.addNewObjectValueMapEntries)(incomingData.externalFieldDataBySubgraphName, targetData.externalFieldDataBySubgraphName);
|
|
536
|
-
(0, utils_6.addMapEntries)(
|
|
537
|
-
|
|
538
|
-
|
|
594
|
+
(0, utils_6.addMapEntries)({
|
|
595
|
+
source: incomingData.isShareableBySubgraphName,
|
|
596
|
+
target: targetData.isShareableBySubgraphName,
|
|
597
|
+
});
|
|
598
|
+
(0, utils_6.addMapEntries)({
|
|
599
|
+
source: incomingData.nullLevelsBySubgraphName,
|
|
600
|
+
target: targetData.nullLevelsBySubgraphName,
|
|
601
|
+
});
|
|
602
|
+
(0, utils_6.addIterableToSet)({
|
|
603
|
+
source: incomingData.subgraphNames,
|
|
604
|
+
target: targetData.subgraphNames,
|
|
605
|
+
});
|
|
539
606
|
}
|
|
540
607
|
getClientSchemaUnionMembers(unionData) {
|
|
541
608
|
const members = [];
|
|
@@ -562,7 +629,10 @@ class FederationFactory {
|
|
|
562
629
|
directivesByDirectiveName: (0, utils_6.copyArrayValueMap)(sourceData.directivesByDirectiveName),
|
|
563
630
|
extensionType: sourceData.extensionType,
|
|
564
631
|
name: sourceData.name,
|
|
565
|
-
persistedDirectivesData:
|
|
632
|
+
persistedDirectivesData: this.extractPersistedDirectives({
|
|
633
|
+
data: (0, utils_5.newPersistedDirectivesData)(),
|
|
634
|
+
directivesByName: sourceData.directivesByDirectiveName,
|
|
635
|
+
}),
|
|
566
636
|
description: (0, utils_5.getInitialFederatedDescription)(sourceData),
|
|
567
637
|
};
|
|
568
638
|
}
|
|
@@ -580,7 +650,10 @@ class FederationFactory {
|
|
|
580
650
|
name: (0, utils_1.stringToNameNode)(sourceData.name),
|
|
581
651
|
},
|
|
582
652
|
parentTypeName: sourceData.parentTypeName,
|
|
583
|
-
persistedDirectivesData:
|
|
653
|
+
persistedDirectivesData: this.extractPersistedDirectives({
|
|
654
|
+
data: (0, utils_5.newPersistedDirectivesData)(),
|
|
655
|
+
directivesByName: sourceData.directivesByDirectiveName,
|
|
656
|
+
}),
|
|
584
657
|
subgraphNames: new Set(sourceData.subgraphNames),
|
|
585
658
|
description: (0, utils_5.getInitialFederatedDescription)(sourceData),
|
|
586
659
|
};
|
|
@@ -605,7 +678,10 @@ class FederationFactory {
|
|
|
605
678
|
},
|
|
606
679
|
originalCoords: sourceData.originalCoords,
|
|
607
680
|
originalParentTypeName: sourceData.originalParentTypeName,
|
|
608
|
-
persistedDirectivesData:
|
|
681
|
+
persistedDirectivesData: this.extractPersistedDirectives({
|
|
682
|
+
data: (0, utils_5.newPersistedDirectivesData)(),
|
|
683
|
+
directivesByName: sourceData.directivesByDirectiveName,
|
|
684
|
+
}),
|
|
609
685
|
renamedParentTypeName: sourceData.renamedParentTypeName,
|
|
610
686
|
requiredSubgraphNames: new Set(sourceData.requiredSubgraphNames),
|
|
611
687
|
subgraphNames: new Set(sourceData.subgraphNames),
|
|
@@ -627,9 +703,6 @@ class FederationFactory {
|
|
|
627
703
|
return inputValueDataByInputValueName;
|
|
628
704
|
}
|
|
629
705
|
copyFieldData(sourceData, isInaccessible) {
|
|
630
|
-
if (sourceData.directivesByDirectiveName.has(string_constants_2.SEMANTIC_NON_NULL)) {
|
|
631
|
-
this.referencedPersistedDirectiveNames.add(string_constants_2.SEMANTIC_NON_NULL);
|
|
632
|
-
}
|
|
633
706
|
return {
|
|
634
707
|
argumentDataByName: this.copyInputValueDataByValueName(sourceData.argumentDataByName, isInaccessible, sourceData.federatedCoords),
|
|
635
708
|
configureDescriptionDataBySubgraphName: (0, utils_6.copyObjectValueMap)(sourceData.configureDescriptionDataBySubgraphName),
|
|
@@ -653,7 +726,10 @@ class FederationFactory {
|
|
|
653
726
|
},
|
|
654
727
|
nullLevelsBySubgraphName: sourceData.nullLevelsBySubgraphName,
|
|
655
728
|
originalParentTypeName: sourceData.originalParentTypeName,
|
|
656
|
-
persistedDirectivesData:
|
|
729
|
+
persistedDirectivesData: this.extractPersistedDirectives({
|
|
730
|
+
data: (0, utils_5.newPersistedDirectivesData)(),
|
|
731
|
+
directivesByName: sourceData.directivesByDirectiveName,
|
|
732
|
+
}),
|
|
657
733
|
renamedParentTypeName: sourceData.renamedParentTypeName,
|
|
658
734
|
subgraphNames: new Set(sourceData.subgraphNames),
|
|
659
735
|
type: sourceData.type,
|
|
@@ -787,7 +863,10 @@ class FederationFactory {
|
|
|
787
863
|
}
|
|
788
864
|
return targetData;
|
|
789
865
|
}
|
|
790
|
-
|
|
866
|
+
this.extractPersistedDirectives({
|
|
867
|
+
data: existingData.persistedDirectivesData,
|
|
868
|
+
directivesByName: incomingData.directivesByDirectiveName,
|
|
869
|
+
});
|
|
791
870
|
return existingData;
|
|
792
871
|
}
|
|
793
872
|
upsertParentDefinitionData(incomingData, subgraphName) {
|
|
@@ -837,7 +916,10 @@ class FederationFactory {
|
|
|
837
916
|
}
|
|
838
917
|
targetData.appearances += 1;
|
|
839
918
|
targetData.isInaccessible ||= isParentInaccessible;
|
|
840
|
-
(0, utils_6.
|
|
919
|
+
(0, utils_6.addIterableToSet)({
|
|
920
|
+
source: incomingData.subgraphNames,
|
|
921
|
+
target: targetData.subgraphNames,
|
|
922
|
+
});
|
|
841
923
|
for (const data of incomingData.enumValueDataByName.values()) {
|
|
842
924
|
this.upsertEnumValueData(targetData.enumValueDataByName, data, isParentInaccessible);
|
|
843
925
|
}
|
|
@@ -851,7 +933,10 @@ class FederationFactory {
|
|
|
851
933
|
this.propagateInaccessibilityToExistingChildren(targetData);
|
|
852
934
|
}
|
|
853
935
|
targetData.isInaccessible ||= isParentInaccessible;
|
|
854
|
-
(0, utils_6.
|
|
936
|
+
(0, utils_6.addIterableToSet)({
|
|
937
|
+
source: incomingData.subgraphNames,
|
|
938
|
+
target: targetData.subgraphNames,
|
|
939
|
+
});
|
|
855
940
|
for (const inputValueData of incomingData.inputValueDataByName.values()) {
|
|
856
941
|
this.upsertInputValueData(targetData.inputValueDataByName, inputValueData, targetData.name, targetData.isInaccessible);
|
|
857
942
|
}
|
|
@@ -866,8 +951,14 @@ class FederationFactory {
|
|
|
866
951
|
this.propagateInaccessibilityToExistingChildren(targetData);
|
|
867
952
|
}
|
|
868
953
|
targetData.isInaccessible ||= isParentInaccessible;
|
|
869
|
-
(0, utils_6.
|
|
870
|
-
|
|
954
|
+
(0, utils_6.addIterableToSet)({
|
|
955
|
+
source: compositeOutputData.implementedInterfaceTypeNames,
|
|
956
|
+
target: targetData.implementedInterfaceTypeNames,
|
|
957
|
+
});
|
|
958
|
+
(0, utils_6.addIterableToSet)({
|
|
959
|
+
source: compositeOutputData.subgraphNames,
|
|
960
|
+
target: targetData.subgraphNames,
|
|
961
|
+
});
|
|
871
962
|
for (const fieldData of compositeOutputData.fieldDataByName.values()) {
|
|
872
963
|
this.upsertFieldData(targetData.fieldDataByName, fieldData, targetData.isInaccessible);
|
|
873
964
|
}
|
|
@@ -876,12 +967,21 @@ class FederationFactory {
|
|
|
876
967
|
if (!(0, utils_5.areKindsEqual)(targetData, incomingData)) {
|
|
877
968
|
return;
|
|
878
969
|
}
|
|
879
|
-
(0, utils_6.addMapEntries)(
|
|
880
|
-
|
|
970
|
+
(0, utils_6.addMapEntries)({
|
|
971
|
+
source: incomingData.memberByMemberTypeName,
|
|
972
|
+
target: targetData.memberByMemberTypeName,
|
|
973
|
+
});
|
|
974
|
+
(0, utils_6.addIterableToSet)({
|
|
975
|
+
source: incomingData.subgraphNames,
|
|
976
|
+
target: targetData.subgraphNames,
|
|
977
|
+
});
|
|
881
978
|
return;
|
|
882
979
|
default:
|
|
883
980
|
// Scalar
|
|
884
|
-
(0, utils_6.
|
|
981
|
+
(0, utils_6.addIterableToSet)({
|
|
982
|
+
source: incomingData.subgraphNames,
|
|
983
|
+
target: targetData.subgraphNames,
|
|
984
|
+
});
|
|
885
985
|
return;
|
|
886
986
|
}
|
|
887
987
|
}
|
|
@@ -941,7 +1041,10 @@ class FederationFactory {
|
|
|
941
1041
|
}
|
|
942
1042
|
(0, utils_5.setLongestDescription)(existingData, incomingData);
|
|
943
1043
|
existingData.repeatable &&= incomingData.repeatable;
|
|
944
|
-
(0, utils_6.
|
|
1044
|
+
(0, utils_6.addIterableToSet)({
|
|
1045
|
+
source: incomingData.subgraphNames,
|
|
1046
|
+
target: existingData.subgraphNames,
|
|
1047
|
+
});
|
|
945
1048
|
}
|
|
946
1049
|
shouldUpdateFederatedFieldAbstractNamedType(abstractTypeName, objectTypeNames) {
|
|
947
1050
|
if (!abstractTypeName) {
|
|
@@ -970,7 +1073,7 @@ class FederationFactory {
|
|
|
970
1073
|
}
|
|
971
1074
|
handleDisparateFieldNamedTypes() {
|
|
972
1075
|
for (const [fieldCoordinates, subgraphNamesByNamedTypeName] of this.subgraphNamesByNamedTypeNameByFieldCoords) {
|
|
973
|
-
const coordinates = fieldCoordinates.split(
|
|
1076
|
+
const coordinates = fieldCoordinates.split(string_constants_1.PERIOD);
|
|
974
1077
|
if (coordinates.length !== 2) {
|
|
975
1078
|
continue;
|
|
976
1079
|
}
|
|
@@ -1136,7 +1239,7 @@ class FederationFactory {
|
|
|
1136
1239
|
}
|
|
1137
1240
|
handleEntityInterfaces() {
|
|
1138
1241
|
for (const [entityInterfaceTypeName, entityInterfaceData] of this.entityInterfaceFederationDataByTypeName) {
|
|
1139
|
-
const entityInterfaceFederationData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, entityInterfaceTypeName,
|
|
1242
|
+
const entityInterfaceFederationData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, entityInterfaceTypeName, string_constants_1.PARENT_DEFINITION_DATA);
|
|
1140
1243
|
if (entityInterfaceFederationData.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION) {
|
|
1141
1244
|
// TODO error
|
|
1142
1245
|
continue;
|
|
@@ -1158,7 +1261,7 @@ class FederationFactory {
|
|
|
1158
1261
|
this.internalGraph.setSubgraphName(subgraphName);
|
|
1159
1262
|
const interfaceObjectNode = this.internalGraph.addOrUpdateNode(entityInterfaceTypeName, { isAbstract: true });
|
|
1160
1263
|
for (const concreteTypeName of concreteTypeNames) {
|
|
1161
|
-
const concreteTypeData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, concreteTypeName,
|
|
1264
|
+
const concreteTypeData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, concreteTypeName, string_constants_1.PARENT_DEFINITION_DATA);
|
|
1162
1265
|
if (!(0, utils_3.isObjectDefinitionData)(concreteTypeData)) {
|
|
1163
1266
|
continue;
|
|
1164
1267
|
}
|
|
@@ -1167,7 +1270,10 @@ class FederationFactory {
|
|
|
1167
1270
|
entityData.subgraphNames.add(subgraphName);
|
|
1168
1271
|
const configurationData = configurationDataByTypeName.get(concreteTypeName);
|
|
1169
1272
|
if (configurationData) {
|
|
1170
|
-
(0, utils_6.
|
|
1273
|
+
(0, utils_6.addIterableToSet)({
|
|
1274
|
+
source: interfaceObjectConfiguration.fieldNames,
|
|
1275
|
+
target: configurationData.fieldNames,
|
|
1276
|
+
});
|
|
1171
1277
|
if (!configurationData.keys) {
|
|
1172
1278
|
configurationData.keys = [...keys];
|
|
1173
1279
|
}
|
|
@@ -1251,7 +1357,7 @@ class FederationFactory {
|
|
|
1251
1357
|
const coords = (0, utils_3.getNodeCoords)(data);
|
|
1252
1358
|
const persistedDirectiveNodes = [];
|
|
1253
1359
|
for (const [directiveName, directiveNodes] of data.persistedDirectivesData.directivesByDirectiveName) {
|
|
1254
|
-
if (directiveName ===
|
|
1360
|
+
if (directiveName === string_constants_1.SEMANTIC_NON_NULL && (0, utils_5.isFieldData)(data)) {
|
|
1255
1361
|
persistedDirectiveNodes.push((0, utils_6.generateSemanticNonNullDirective)((0, utils_6.getFirstEntry)(data.nullLevelsBySubgraphName) ?? new Set([0])));
|
|
1256
1362
|
continue;
|
|
1257
1363
|
}
|
|
@@ -1336,7 +1442,7 @@ class FederationFactory {
|
|
|
1336
1442
|
}
|
|
1337
1443
|
}
|
|
1338
1444
|
if (invalidRequiredArguments.length > 0) {
|
|
1339
|
-
this.errors.push((0, errors_1.invalidRequiredInputValueError)(
|
|
1445
|
+
this.errors.push((0, errors_1.invalidRequiredInputValueError)(string_constants_1.FIELD, fieldPath, invalidRequiredArguments));
|
|
1340
1446
|
}
|
|
1341
1447
|
else if (argumentNames.length > 0) {
|
|
1342
1448
|
// fieldConfiguration might already exist through subscriptionFilter
|
|
@@ -1377,7 +1483,7 @@ class FederationFactory {
|
|
|
1377
1483
|
}
|
|
1378
1484
|
}
|
|
1379
1485
|
validateOneOfDirective({ data, inputValueNodes, requiredFieldNames }) {
|
|
1380
|
-
if (!data.directivesByDirectiveName.has(
|
|
1486
|
+
if (!data.directivesByDirectiveName.has(string_constants_1.ONE_OF)) {
|
|
1381
1487
|
return true;
|
|
1382
1488
|
}
|
|
1383
1489
|
if (requiredFieldNames.size > 0) {
|
|
@@ -1402,12 +1508,15 @@ class FederationFactory {
|
|
|
1402
1508
|
}
|
|
1403
1509
|
switch (parentDefinitionData.kind) {
|
|
1404
1510
|
case graphql_1.Kind.ENUM_TYPE_DEFINITION: {
|
|
1511
|
+
if (strings_1.IGNORED_FEDERATED_TYPE_NAMES.has(parentTypeName)) {
|
|
1512
|
+
break;
|
|
1513
|
+
}
|
|
1405
1514
|
const enumValueNodes = [];
|
|
1406
1515
|
const clientEnumValueNodes = [];
|
|
1407
1516
|
const mergeMethod = this.getEnumValueMergeMethod(parentTypeName);
|
|
1408
1517
|
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName));
|
|
1409
1518
|
for (const enumValueData of parentDefinitionData.enumValueDataByName.values()) {
|
|
1410
|
-
const enumValueNode =
|
|
1519
|
+
const enumValueNode = this.getNodeForRouterSchemaByData(enumValueData);
|
|
1411
1520
|
const isValueInaccessible = (0, utils_5.isNodeDataInaccessible)(enumValueData);
|
|
1412
1521
|
const clientEnumValueNode = {
|
|
1413
1522
|
...enumValueData.node,
|
|
@@ -1447,7 +1556,7 @@ class FederationFactory {
|
|
|
1447
1556
|
break;
|
|
1448
1557
|
}
|
|
1449
1558
|
if (clientEnumValueNodes.length < 1) {
|
|
1450
|
-
this.errors.push((0, errors_1.allChildDefinitionsAreInaccessibleError)((0, utils_6.kindToNodeType)(parentDefinitionData.kind), parentTypeName,
|
|
1559
|
+
this.errors.push((0, errors_1.allChildDefinitionsAreInaccessibleError)((0, utils_6.kindToNodeType)(parentDefinitionData.kind), parentTypeName, string_constants_1.ENUM_VALUE));
|
|
1451
1560
|
break;
|
|
1452
1561
|
}
|
|
1453
1562
|
this.clientDefinitions.push({
|
|
@@ -1458,6 +1567,9 @@ class FederationFactory {
|
|
|
1458
1567
|
break;
|
|
1459
1568
|
}
|
|
1460
1569
|
case graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION: {
|
|
1570
|
+
if (strings_1.IGNORED_FEDERATED_TYPE_NAMES.has(parentTypeName)) {
|
|
1571
|
+
break;
|
|
1572
|
+
}
|
|
1461
1573
|
const invalidRequiredInputs = new Array();
|
|
1462
1574
|
const inputValueNodes = new Array();
|
|
1463
1575
|
const clientInputValueNodes = new Array();
|
|
@@ -1485,7 +1597,7 @@ class FederationFactory {
|
|
|
1485
1597
|
}
|
|
1486
1598
|
}
|
|
1487
1599
|
if (invalidRequiredInputs.length > 0) {
|
|
1488
|
-
this.errors.push((0, errors_1.invalidRequiredInputValueError)(
|
|
1600
|
+
this.errors.push((0, errors_1.invalidRequiredInputValueError)(string_constants_1.INPUT_OBJECT, parentTypeName, invalidRequiredInputs, false));
|
|
1489
1601
|
break;
|
|
1490
1602
|
}
|
|
1491
1603
|
if (!this.validateOneOfDirective({
|
|
@@ -1565,7 +1677,7 @@ class FederationFactory {
|
|
|
1565
1677
|
if (clientSchemaFieldNodes.length < 1) {
|
|
1566
1678
|
const error = isQuery
|
|
1567
1679
|
? (0, errors_1.noQueryRootTypeError)(false)
|
|
1568
|
-
: (0, errors_1.allChildDefinitionsAreInaccessibleError)((0, utils_6.kindToNodeType)(parentDefinitionData.kind), parentTypeName,
|
|
1680
|
+
: (0, errors_1.allChildDefinitionsAreInaccessibleError)((0, utils_6.kindToNodeType)(parentDefinitionData.kind), parentTypeName, string_constants_1.FIELD);
|
|
1569
1681
|
this.errors.push(error);
|
|
1570
1682
|
break;
|
|
1571
1683
|
}
|
|
@@ -1577,7 +1689,7 @@ class FederationFactory {
|
|
|
1577
1689
|
break;
|
|
1578
1690
|
}
|
|
1579
1691
|
case graphql_1.Kind.SCALAR_TYPE_DEFINITION: {
|
|
1580
|
-
if (
|
|
1692
|
+
if (strings_1.IGNORED_FEDERATED_TYPE_NAMES.has(parentTypeName)) {
|
|
1581
1693
|
break;
|
|
1582
1694
|
}
|
|
1583
1695
|
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName));
|
|
@@ -1603,7 +1715,7 @@ class FederationFactory {
|
|
|
1603
1715
|
}
|
|
1604
1716
|
const clientMembers = this.getClientSchemaUnionMembers(parentDefinitionData);
|
|
1605
1717
|
if (clientMembers.length < 1) {
|
|
1606
|
-
this.errors.push((0, errors_1.allChildDefinitionsAreInaccessibleError)(
|
|
1718
|
+
this.errors.push((0, errors_1.allChildDefinitionsAreInaccessibleError)(string_constants_1.UNION, parentTypeName, 'union member type'));
|
|
1607
1719
|
break;
|
|
1608
1720
|
}
|
|
1609
1721
|
this.clientDefinitions.push({
|
|
@@ -1627,7 +1739,7 @@ class FederationFactory {
|
|
|
1627
1739
|
}
|
|
1628
1740
|
for (const coords of fieldCoords) {
|
|
1629
1741
|
// The coords should all be exactly <parentTypeName>.<fieldName>
|
|
1630
|
-
const segments = coords.split(
|
|
1742
|
+
const segments = coords.split(string_constants_1.PERIOD);
|
|
1631
1743
|
switch (segments.length) {
|
|
1632
1744
|
case 2: {
|
|
1633
1745
|
const parentAuthData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, segments[0], () => (0, utils_3.newAuthorizationData)(segments[0]));
|
|
@@ -1655,14 +1767,14 @@ class FederationFactory {
|
|
|
1655
1767
|
this.handleEntityInterfaces();
|
|
1656
1768
|
// generate the map of tag data that is used by contracts
|
|
1657
1769
|
this.generateTagData();
|
|
1658
|
-
this
|
|
1770
|
+
this.#addDirectiveDefinitionsAndDepsToRouterAndClientSchemas();
|
|
1659
1771
|
// The named type auth data can only be pushed to the field once it has all been consolidated
|
|
1660
1772
|
this.pushNamedTypeAuthDataToFields();
|
|
1661
1773
|
}
|
|
1662
1774
|
validateInterfaceImplementationsAndPushToDocumentDefinitions(interfaceImplementations) {
|
|
1663
1775
|
for (const { data, clientSchemaFieldNodes } of interfaceImplementations) {
|
|
1664
1776
|
data.node.interfaces = this.getValidImplementedInterfaces(data);
|
|
1665
|
-
this.routerDefinitions.push(
|
|
1777
|
+
this.routerDefinitions.push(this.getNodeForRouterSchemaByData(data));
|
|
1666
1778
|
if ((0, utils_5.isNodeDataInaccessible)(data)) {
|
|
1667
1779
|
this.validateReferencesOfInaccessibleType(data);
|
|
1668
1780
|
this.internalGraph.setNodeInaccessible(data.name);
|
|
@@ -1685,45 +1797,37 @@ class FederationFactory {
|
|
|
1685
1797
|
});
|
|
1686
1798
|
}
|
|
1687
1799
|
}
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1800
|
+
#addDirectiveDefinitionsAndDepsToRouterAndClientSchemas() {
|
|
1801
|
+
const clientDependencies = new Set();
|
|
1802
|
+
const routerDependencies = new Set();
|
|
1803
|
+
for (const directiveName of this.referencedPersistedDirectiveNames) {
|
|
1804
|
+
const definition = constants_1.DIRECTIVE_DEFINITION_BY_NAME.get(directiveName);
|
|
1805
|
+
if (!definition) {
|
|
1806
|
+
continue;
|
|
1694
1807
|
}
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
];
|
|
1709
|
-
return;
|
|
1808
|
+
const dependencies = strings_1.DEPENDENCIES_BY_DIRECTIVE_NAME.get(directiveName) ?? [];
|
|
1809
|
+
if (strings_1.CLIENT_PERSISTED_DIRECTIVE_NAMES.has(directiveName)) {
|
|
1810
|
+
this.clientDefinitions.push(definition);
|
|
1811
|
+
(0, utils_6.addIterableToSet)({
|
|
1812
|
+
source: dependencies,
|
|
1813
|
+
target: clientDependencies,
|
|
1814
|
+
});
|
|
1815
|
+
}
|
|
1816
|
+
this.routerDefinitions.push(definition);
|
|
1817
|
+
(0, utils_6.addIterableToSet)({
|
|
1818
|
+
source: dependencies,
|
|
1819
|
+
target: routerDependencies,
|
|
1820
|
+
});
|
|
1710
1821
|
}
|
|
1711
|
-
|
|
1712
|
-
this.routerDefinitions
|
|
1713
|
-
constants_1.AUTHENTICATED_DEFINITION,
|
|
1714
|
-
constants_1.DEPRECATED_DEFINITION,
|
|
1715
|
-
constants_1.INACCESSIBLE_DEFINITION,
|
|
1716
|
-
constants_1.REQUIRES_SCOPES_DEFINITION,
|
|
1717
|
-
constants_1.TAG_DEFINITION,
|
|
1718
|
-
constants_1.SCOPE_SCALAR_DEFINITION,
|
|
1719
|
-
];
|
|
1822
|
+
this.clientDefinitions.push(...clientDependencies);
|
|
1823
|
+
this.routerDefinitions.push(...routerDependencies);
|
|
1720
1824
|
}
|
|
1721
1825
|
validatePathSegmentInaccessibility(path) {
|
|
1722
1826
|
if (!path) {
|
|
1723
1827
|
return false;
|
|
1724
1828
|
}
|
|
1725
|
-
const coordinates = path.split(
|
|
1726
|
-
const segments = coordinates.split(
|
|
1829
|
+
const coordinates = path.split(string_constants_1.LEFT_PARENTHESIS)[0];
|
|
1830
|
+
const segments = coordinates.split(string_constants_1.PERIOD);
|
|
1727
1831
|
let segment = segments[0];
|
|
1728
1832
|
for (let i = 0; i < segments.length; i++) {
|
|
1729
1833
|
if (this.inaccessibleCoords.has(segment)) {
|
|
@@ -1752,7 +1856,7 @@ class FederationFactory {
|
|
|
1752
1856
|
}
|
|
1753
1857
|
}
|
|
1754
1858
|
validateQueryRootType() {
|
|
1755
|
-
const query = this.parentDefinitionDataByTypeName.get(
|
|
1859
|
+
const query = this.parentDefinitionDataByTypeName.get(string_constants_1.QUERY);
|
|
1756
1860
|
if (!query || query.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION || query.fieldDataByName.size < 1) {
|
|
1757
1861
|
this.errors.push((0, errors_1.noQueryRootTypeError)());
|
|
1758
1862
|
return;
|
|
@@ -1765,7 +1869,7 @@ class FederationFactory {
|
|
|
1765
1869
|
this.errors.push((0, errors_1.noQueryRootTypeError)());
|
|
1766
1870
|
}
|
|
1767
1871
|
validateSubscriptionFieldConditionFieldPath(conditionFieldPath, objectData, inputFieldPath, directiveSubgraphName, fieldErrorMessages) {
|
|
1768
|
-
const paths = conditionFieldPath.split(
|
|
1872
|
+
const paths = conditionFieldPath.split(string_constants_1.PERIOD);
|
|
1769
1873
|
if (paths.length < 1) {
|
|
1770
1874
|
fieldErrorMessages.push((0, errors_1.invalidSubscriptionFieldConditionFieldPathErrorMessage)(inputFieldPath, conditionFieldPath));
|
|
1771
1875
|
return [];
|
|
@@ -1801,7 +1905,7 @@ class FederationFactory {
|
|
|
1801
1905
|
lastData = { kind: graphql_1.Kind.SCALAR_TYPE_DEFINITION, name: fieldData.namedTypeName };
|
|
1802
1906
|
continue;
|
|
1803
1907
|
}
|
|
1804
|
-
lastData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, fieldData.namedTypeName,
|
|
1908
|
+
lastData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, fieldData.namedTypeName, string_constants_1.PARENT_DEFINITION_DATA);
|
|
1805
1909
|
}
|
|
1806
1910
|
if (!(0, utils_5.isLeafKind)(lastData.kind)) {
|
|
1807
1911
|
fieldErrorMessages.push((0, errors_1.nonLeafSubscriptionFieldConditionFieldPathFinalFieldErrorMessage)(inputFieldPath, conditionFieldPath, paths[paths.length - 1], (0, utils_6.kindToNodeType)(lastData.kind), lastData.name));
|
|
@@ -1816,7 +1920,7 @@ class FederationFactory {
|
|
|
1816
1920
|
return false;
|
|
1817
1921
|
}
|
|
1818
1922
|
let hasErrors = false;
|
|
1819
|
-
const validFieldNames = new Set([
|
|
1923
|
+
const validFieldNames = new Set([string_constants_1.FIELD_PATH, string_constants_1.VALUES]);
|
|
1820
1924
|
const duplicatedFieldNames = new Set();
|
|
1821
1925
|
const invalidFieldNames = new Set();
|
|
1822
1926
|
const fieldErrorMessages = [];
|
|
@@ -1824,17 +1928,17 @@ class FederationFactory {
|
|
|
1824
1928
|
const inputFieldName = objectFieldNode.name.value;
|
|
1825
1929
|
const inputFieldPath = inputPath + `.${inputFieldName}`;
|
|
1826
1930
|
switch (inputFieldName) {
|
|
1827
|
-
case
|
|
1828
|
-
if (validFieldNames.has(
|
|
1829
|
-
validFieldNames.delete(
|
|
1931
|
+
case string_constants_1.FIELD_PATH: {
|
|
1932
|
+
if (validFieldNames.has(string_constants_1.FIELD_PATH)) {
|
|
1933
|
+
validFieldNames.delete(string_constants_1.FIELD_PATH);
|
|
1830
1934
|
}
|
|
1831
1935
|
else {
|
|
1832
1936
|
hasErrors = true;
|
|
1833
|
-
duplicatedFieldNames.add(
|
|
1937
|
+
duplicatedFieldNames.add(string_constants_1.FIELD_PATH);
|
|
1834
1938
|
break;
|
|
1835
1939
|
}
|
|
1836
1940
|
if (objectFieldNode.value.kind !== graphql_1.Kind.STRING) {
|
|
1837
|
-
fieldErrorMessages.push((0, errors_1.invalidInputFieldTypeErrorMessage)(inputFieldPath,
|
|
1941
|
+
fieldErrorMessages.push((0, errors_1.invalidInputFieldTypeErrorMessage)(inputFieldPath, string_constants_1.STRING, (0, utils_6.kindToNodeType)(objectFieldNode.value.kind)));
|
|
1838
1942
|
hasErrors = true;
|
|
1839
1943
|
break;
|
|
1840
1944
|
}
|
|
@@ -1846,18 +1950,18 @@ class FederationFactory {
|
|
|
1846
1950
|
condition.fieldPath = fieldPath;
|
|
1847
1951
|
break;
|
|
1848
1952
|
}
|
|
1849
|
-
case
|
|
1850
|
-
if (validFieldNames.has(
|
|
1851
|
-
validFieldNames.delete(
|
|
1953
|
+
case string_constants_1.VALUES: {
|
|
1954
|
+
if (validFieldNames.has(string_constants_1.VALUES)) {
|
|
1955
|
+
validFieldNames.delete(string_constants_1.VALUES);
|
|
1852
1956
|
}
|
|
1853
1957
|
else {
|
|
1854
1958
|
hasErrors = true;
|
|
1855
|
-
duplicatedFieldNames.add(
|
|
1959
|
+
duplicatedFieldNames.add(string_constants_1.VALUES);
|
|
1856
1960
|
break;
|
|
1857
1961
|
}
|
|
1858
1962
|
const objectFieldValueKind = objectFieldNode.value.kind;
|
|
1859
1963
|
if (objectFieldValueKind == graphql_1.Kind.NULL || objectFieldValueKind == graphql_1.Kind.OBJECT) {
|
|
1860
|
-
fieldErrorMessages.push((0, errors_1.invalidInputFieldTypeErrorMessage)(inputFieldPath,
|
|
1964
|
+
fieldErrorMessages.push((0, errors_1.invalidInputFieldTypeErrorMessage)(inputFieldPath, string_constants_1.LIST, (0, utils_6.kindToNodeType)(objectFieldNode.value.kind)));
|
|
1861
1965
|
hasErrors = true;
|
|
1862
1966
|
break;
|
|
1863
1967
|
}
|
|
@@ -1915,7 +2019,7 @@ class FederationFactory {
|
|
|
1915
2019
|
}
|
|
1916
2020
|
const objectFieldNode = objectValueNode.fields[0];
|
|
1917
2021
|
const fieldName = objectFieldNode.name.value;
|
|
1918
|
-
if (!
|
|
2022
|
+
if (!strings_1.SUBSCRIPTION_FILTER_INPUT_NAMES.has(fieldName)) {
|
|
1919
2023
|
errorMessages.push((0, errors_1.subscriptionFilterConditionInvalidInputFieldErrorMessage)(inputPath, fieldName));
|
|
1920
2024
|
return false;
|
|
1921
2025
|
}
|
|
@@ -1923,34 +2027,34 @@ class FederationFactory {
|
|
|
1923
2027
|
switch (objectFieldNode.value.kind) {
|
|
1924
2028
|
case graphql_1.Kind.OBJECT: {
|
|
1925
2029
|
switch (fieldName) {
|
|
1926
|
-
case
|
|
2030
|
+
case string_constants_1.IN_UPPER: {
|
|
1927
2031
|
configuration.in = { fieldPath: [], values: [] };
|
|
1928
2032
|
return this.validateSubscriptionFieldCondition(objectFieldNode.value, configuration.in, objectData, depth, inputPath + `.IN`, directiveSubgraphName, errorMessages);
|
|
1929
2033
|
}
|
|
1930
|
-
case
|
|
2034
|
+
case string_constants_1.NOT_UPPER: {
|
|
1931
2035
|
configuration.not = {};
|
|
1932
2036
|
return this.validateSubscriptionFilterCondition(objectFieldNode.value, configuration.not, objectData, depth, inputPath + `.NOT`, directiveSubgraphName, errorMessages);
|
|
1933
2037
|
}
|
|
1934
2038
|
default:
|
|
1935
2039
|
// The field is guaranteed to be an AND or an OR
|
|
1936
|
-
errorMessages.push((0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(inputFieldPath,
|
|
2040
|
+
errorMessages.push((0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(inputFieldPath, string_constants_1.LIST, string_constants_1.OBJECT));
|
|
1937
2041
|
return false;
|
|
1938
2042
|
}
|
|
1939
2043
|
}
|
|
1940
2044
|
case graphql_1.Kind.LIST: {
|
|
1941
2045
|
const listConfigurations = [];
|
|
1942
2046
|
switch (fieldName) {
|
|
1943
|
-
case
|
|
2047
|
+
case string_constants_1.AND_UPPER: {
|
|
1944
2048
|
configuration.and = listConfigurations;
|
|
1945
2049
|
break;
|
|
1946
2050
|
}
|
|
1947
|
-
case
|
|
2051
|
+
case string_constants_1.OR_UPPER: {
|
|
1948
2052
|
configuration.or = listConfigurations;
|
|
1949
2053
|
break;
|
|
1950
2054
|
}
|
|
1951
2055
|
default:
|
|
1952
2056
|
// The field is guaranteed to be an IN or a NOT
|
|
1953
|
-
errorMessages.push((0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(inputFieldPath,
|
|
2057
|
+
errorMessages.push((0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(inputFieldPath, string_constants_1.OBJECT, string_constants_1.LIST));
|
|
1954
2058
|
return false;
|
|
1955
2059
|
}
|
|
1956
2060
|
const listLength = objectFieldNode.value.values.length;
|
|
@@ -1980,7 +2084,7 @@ class FederationFactory {
|
|
|
1980
2084
|
return isValid;
|
|
1981
2085
|
}
|
|
1982
2086
|
default: {
|
|
1983
|
-
const expectedTypeString =
|
|
2087
|
+
const expectedTypeString = strings_1.SUBSCRIPTION_FILTER_LIST_INPUT_NAMES.has(fieldName) ? string_constants_1.LIST : string_constants_1.OBJECT;
|
|
1984
2088
|
errorMessages.push((0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(inputFieldPath, expectedTypeString, (0, utils_6.kindToNodeType)(objectFieldNode.value.kind)));
|
|
1985
2089
|
return false;
|
|
1986
2090
|
}
|
|
@@ -1994,13 +2098,13 @@ class FederationFactory {
|
|
|
1994
2098
|
const argumentNode = directiveNode.arguments[0];
|
|
1995
2099
|
if (argumentNode.value.kind !== graphql_1.Kind.OBJECT) {
|
|
1996
2100
|
this.errors.push((0, errors_1.invalidSubscriptionFilterDirectiveError)(fieldPath, [
|
|
1997
|
-
(0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(
|
|
2101
|
+
(0, errors_1.subscriptionFilterConditionInvalidInputFieldTypeErrorMessage)(string_constants_1.CONDITION, string_constants_1.OBJECT, (0, utils_6.kindToNodeType)(argumentNode.value.kind)),
|
|
1998
2102
|
]));
|
|
1999
2103
|
return;
|
|
2000
2104
|
}
|
|
2001
2105
|
const condition = {};
|
|
2002
2106
|
const errorMessages = [];
|
|
2003
|
-
if (!this.validateSubscriptionFilterCondition(argumentNode.value, condition, objectData, 0,
|
|
2107
|
+
if (!this.validateSubscriptionFilterCondition(argumentNode.value, condition, objectData, 0, string_constants_1.CONDITION, directiveSubgraphName, errorMessages)) {
|
|
2004
2108
|
this.errors.push((0, errors_1.invalidSubscriptionFilterDirectiveError)(fieldPath, errorMessages));
|
|
2005
2109
|
this.isMaxDepth = false;
|
|
2006
2110
|
return;
|
|
@@ -2087,7 +2191,7 @@ class FederationFactory {
|
|
|
2087
2191
|
for (const subgraph of this.internalSubgraphBySubgraphName.values()) {
|
|
2088
2192
|
subgraphConfigBySubgraphName.set(subgraph.name, {
|
|
2089
2193
|
configurationDataByTypeName: subgraph.configurationDataByTypeName,
|
|
2090
|
-
|
|
2194
|
+
directiveDefinitionByName: subgraph.directiveDefinitionByName,
|
|
2091
2195
|
isVersionTwo: subgraph.isVersionTwo,
|
|
2092
2196
|
parentDefinitionDataByTypeName: subgraph.parentDefinitionDataByTypeName,
|
|
2093
2197
|
schema: subgraph.schema,
|
|
@@ -2125,16 +2229,16 @@ class FederationFactory {
|
|
|
2125
2229
|
continue;
|
|
2126
2230
|
}
|
|
2127
2231
|
if (!tagNames.isDisjointFrom(childTagData.tagNames)) {
|
|
2128
|
-
(0, utils_6.getValueOrDefault)(childData.persistedDirectivesData.directivesByDirectiveName,
|
|
2129
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2232
|
+
(0, utils_6.getValueOrDefault)(childData.persistedDirectivesData.directivesByDirectiveName, string_constants_1.INACCESSIBLE, () => [
|
|
2233
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2130
2234
|
]);
|
|
2131
2235
|
this.inaccessibleCoords.add(`${parentDefinitionData.name}.${childName}`);
|
|
2132
2236
|
accessibleChildren -= 1;
|
|
2133
2237
|
}
|
|
2134
2238
|
}
|
|
2135
2239
|
if (accessibleChildren < 1) {
|
|
2136
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2137
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2240
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2241
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2138
2242
|
]);
|
|
2139
2243
|
this.inaccessibleCoords.add(parentDefinitionData.name);
|
|
2140
2244
|
}
|
|
@@ -2148,16 +2252,16 @@ class FederationFactory {
|
|
|
2148
2252
|
}
|
|
2149
2253
|
const childTagData = childTagDataByChildName.get(childName);
|
|
2150
2254
|
if (!childTagData || tagNames.isDisjointFrom(childTagData.tagNames)) {
|
|
2151
|
-
(0, utils_6.getValueOrDefault)(childData.persistedDirectivesData.directivesByDirectiveName,
|
|
2152
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2255
|
+
(0, utils_6.getValueOrDefault)(childData.persistedDirectivesData.directivesByDirectiveName, string_constants_1.INACCESSIBLE, () => [
|
|
2256
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2153
2257
|
]);
|
|
2154
2258
|
this.inaccessibleCoords.add(`${parentDefinitionData.name}.${childName}`);
|
|
2155
2259
|
accessibleChildren -= 1;
|
|
2156
2260
|
}
|
|
2157
2261
|
}
|
|
2158
2262
|
if (accessibleChildren < 1) {
|
|
2159
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2160
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2263
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2264
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2161
2265
|
]);
|
|
2162
2266
|
this.inaccessibleCoords.add(parentDefinitionData.name);
|
|
2163
2267
|
}
|
|
@@ -2166,17 +2270,17 @@ class FederationFactory {
|
|
|
2166
2270
|
if (!this.isVersionTwo) {
|
|
2167
2271
|
/* If all the subgraphs are version one, the @inaccessible directive won't be present.
|
|
2168
2272
|
** However, contracts require @inaccessible to exclude applicable tagged types. */
|
|
2169
|
-
this.routerDefinitions.push(
|
|
2273
|
+
this.routerDefinitions.push(directive_definitions_1.INACCESSIBLE_DEFINITION);
|
|
2170
2274
|
}
|
|
2171
2275
|
if (contractTagOptions.tagNamesToExclude.size > 0) {
|
|
2172
2276
|
for (const [parentTypeName, parentTagData] of this.parentTagDataByTypeName) {
|
|
2173
|
-
const parentDefinitionData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, parentTypeName,
|
|
2277
|
+
const parentDefinitionData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, parentTypeName, string_constants_1.PARENT_DEFINITION_DATA);
|
|
2174
2278
|
if ((0, utils_5.isNodeDataInaccessible)(parentDefinitionData)) {
|
|
2175
2279
|
continue;
|
|
2176
2280
|
}
|
|
2177
2281
|
if (!contractTagOptions.tagNamesToExclude.isDisjointFrom(parentTagData.tagNames)) {
|
|
2178
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2179
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2282
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2283
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2180
2284
|
]);
|
|
2181
2285
|
this.inaccessibleCoords.add(parentTypeName);
|
|
2182
2286
|
// If the parent is inaccessible, there is no need to assess further
|
|
@@ -2208,8 +2312,8 @@ class FederationFactory {
|
|
|
2208
2312
|
continue;
|
|
2209
2313
|
}
|
|
2210
2314
|
if (!contractTagOptions.tagNamesToExclude.isDisjointFrom(childTagData.tagNames)) {
|
|
2211
|
-
(0, utils_6.getValueOrDefault)(fieldData.persistedDirectivesData.directivesByDirectiveName,
|
|
2212
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2315
|
+
(0, utils_6.getValueOrDefault)(fieldData.persistedDirectivesData.directivesByDirectiveName, string_constants_1.INACCESSIBLE, () => [
|
|
2316
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2213
2317
|
]);
|
|
2214
2318
|
this.inaccessibleCoords.add(fieldData.federatedCoords);
|
|
2215
2319
|
accessibleFields -= 1;
|
|
@@ -2221,14 +2325,14 @@ class FederationFactory {
|
|
|
2221
2325
|
continue;
|
|
2222
2326
|
}
|
|
2223
2327
|
if (!contractTagOptions.tagNamesToExclude.isDisjointFrom(argTagNames)) {
|
|
2224
|
-
(0, utils_6.getValueOrDefault)(inputValueData.persistedDirectivesData.directivesByDirectiveName,
|
|
2328
|
+
(0, utils_6.getValueOrDefault)(inputValueData.persistedDirectivesData.directivesByDirectiveName, string_constants_1.INACCESSIBLE, () => [(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE)]);
|
|
2225
2329
|
this.inaccessibleCoords.add(inputValueData.federatedCoords);
|
|
2226
2330
|
}
|
|
2227
2331
|
}
|
|
2228
2332
|
}
|
|
2229
2333
|
if (accessibleFields < 1) {
|
|
2230
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2231
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2334
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2335
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2232
2336
|
]);
|
|
2233
2337
|
this.inaccessibleCoords.add(parentTypeName);
|
|
2234
2338
|
}
|
|
@@ -2243,8 +2347,8 @@ class FederationFactory {
|
|
|
2243
2347
|
}
|
|
2244
2348
|
const parentTagData = this.parentTagDataByTypeName.get(parentTypeName);
|
|
2245
2349
|
if (!parentTagData) {
|
|
2246
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2247
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2350
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2351
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2248
2352
|
]);
|
|
2249
2353
|
this.inaccessibleCoords.add(parentTypeName);
|
|
2250
2354
|
// If the parent is inaccessible, there is no need to assess further
|
|
@@ -2254,8 +2358,8 @@ class FederationFactory {
|
|
|
2254
2358
|
continue;
|
|
2255
2359
|
}
|
|
2256
2360
|
if (parentTagData.childTagDataByChildName.size < 1) {
|
|
2257
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2258
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2361
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2362
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2259
2363
|
]);
|
|
2260
2364
|
this.inaccessibleCoords.add(parentTypeName);
|
|
2261
2365
|
// If the parent is inaccessible, there is no need to assess further
|
|
@@ -2281,16 +2385,16 @@ class FederationFactory {
|
|
|
2281
2385
|
}
|
|
2282
2386
|
const childTagData = parentTagData.childTagDataByChildName.get(fieldName);
|
|
2283
2387
|
if (!childTagData || contractTagOptions.tagNamesToInclude.isDisjointFrom(childTagData.tagNames)) {
|
|
2284
|
-
(0, utils_6.getValueOrDefault)(fieldData.persistedDirectivesData.directivesByDirectiveName,
|
|
2285
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2388
|
+
(0, utils_6.getValueOrDefault)(fieldData.persistedDirectivesData.directivesByDirectiveName, string_constants_1.INACCESSIBLE, () => [
|
|
2389
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2286
2390
|
]);
|
|
2287
2391
|
this.inaccessibleCoords.add(fieldData.federatedCoords);
|
|
2288
2392
|
accessibleFields -= 1;
|
|
2289
2393
|
}
|
|
2290
2394
|
}
|
|
2291
2395
|
if (accessibleFields < 1) {
|
|
2292
|
-
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(
|
|
2293
|
-
(0, utils_6.generateSimpleDirective)(
|
|
2396
|
+
parentDefinitionData.persistedDirectivesData.directivesByDirectiveName.set(string_constants_1.INACCESSIBLE, [
|
|
2397
|
+
(0, utils_6.generateSimpleDirective)(string_constants_1.INACCESSIBLE),
|
|
2294
2398
|
]);
|
|
2295
2399
|
this.inaccessibleCoords.add(parentTypeName);
|
|
2296
2400
|
}
|
|
@@ -2322,7 +2426,7 @@ class FederationFactory {
|
|
|
2322
2426
|
for (const subgraph of this.internalSubgraphBySubgraphName.values()) {
|
|
2323
2427
|
subgraphConfigBySubgraphName.set(subgraph.name, {
|
|
2324
2428
|
configurationDataByTypeName: subgraph.configurationDataByTypeName,
|
|
2325
|
-
|
|
2429
|
+
directiveDefinitionByName: subgraph.directiveDefinitionByName,
|
|
2326
2430
|
isVersionTwo: subgraph.isVersionTwo,
|
|
2327
2431
|
parentDefinitionDataByTypeName: subgraph.parentDefinitionDataByTypeName,
|
|
2328
2432
|
schema: subgraph.schema,
|
|
@@ -2375,7 +2479,10 @@ function initializeFederationFactory({ disableResolvabilityValidation, subgraphs
|
|
|
2375
2479
|
const implementations = entityInterfaceData.concreteTypeNames.size;
|
|
2376
2480
|
for (const [subgraphName, subgraphData] of entityInterfaceData.subgraphDataByTypeName) {
|
|
2377
2481
|
const definedConcreteTypeNames = (0, utils_6.getValueOrDefault)(definedConcreteTypeNamesBySubgraphName, subgraphName, () => new Set());
|
|
2378
|
-
(0, utils_6.
|
|
2482
|
+
(0, utils_6.addIterableToSet)({
|
|
2483
|
+
source: subgraphData.concreteTypeNames,
|
|
2484
|
+
target: definedConcreteTypeNames,
|
|
2485
|
+
});
|
|
2379
2486
|
if (!subgraphData.isInterfaceObject) {
|
|
2380
2487
|
if (subgraphData.resolvable && subgraphData.concreteTypeNames.size !== implementations) {
|
|
2381
2488
|
(0, utils_6.getValueOrDefault)(invalidEntityInterfacesByTypeName, typeName, () => new Array()).push({
|
|
@@ -2386,7 +2493,10 @@ function initializeFederationFactory({ disableResolvabilityValidation, subgraphs
|
|
|
2386
2493
|
}
|
|
2387
2494
|
continue;
|
|
2388
2495
|
}
|
|
2389
|
-
(0, utils_6.
|
|
2496
|
+
(0, utils_6.addIterableToSet)({
|
|
2497
|
+
source: entityInterfaceData.concreteTypeNames,
|
|
2498
|
+
target: definedConcreteTypeNames,
|
|
2499
|
+
});
|
|
2390
2500
|
const { parentDefinitionDataByTypeName } = (0, utils_6.getOrThrowError)(result.internalSubgraphBySubgraphName, subgraphName, 'internalSubgraphBySubgraphName');
|
|
2391
2501
|
const invalidTypeNames = [];
|
|
2392
2502
|
for (const concreteTypeName of entityInterfaceData.concreteTypeNames) {
|