@wundergraph/composition 0.38.0 → 0.39.0
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/normalization/types.d.ts +2 -0
- package/dist/router-configuration/types.d.ts +2 -1
- package/dist/schema-building/types.d.ts +15 -4
- package/dist/schema-building/utils.d.ts +5 -4
- package/dist/schema-building/utils.js +34 -38
- package/dist/schema-building/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/composition-version.js +1 -1
- package/dist/utils/string-constants.d.ts +1 -1
- package/dist/utils/string-constants.js +3 -3
- package/dist/utils/string-constants.js.map +1 -1
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +8 -0
- package/dist/utils/utils.js.map +1 -1
- package/dist/v1/federation/federation-factory.d.ts +4 -2
- package/dist/v1/federation/federation-factory.js +69 -27
- package/dist/v1/federation/federation-factory.js.map +1 -1
- package/dist/v1/federation/utils.d.ts +1 -0
- package/dist/v1/federation/utils.js.map +1 -1
- package/dist/v1/normalization/normalization-factory.d.ts +6 -8
- package/dist/v1/normalization/normalization-factory.js +48 -147
- package/dist/v1/normalization/normalization-factory.js.map +1 -1
- package/dist/v1/normalization/walkers.d.ts +0 -1
- package/dist/v1/normalization/walkers.js +1 -100
- package/dist/v1/normalization/walkers.js.map +1 -1
- package/dist/v1/utils/constants.d.ts +1 -0
- package/dist/v1/utils/constants.js +2 -1
- package/dist/v1/utils/constants.js.map +1 -1
- package/dist/v1/utils/utils.d.ts +14 -13
- package/dist/v1/utils/utils.js +129 -91
- package/dist/v1/utils/utils.js.map +1 -1
- package/package.json +3 -2
package/dist/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;AAsBA,oCAUC;AAED,0CAMC;AAED,oDAYC;AAED,wDAQC;AAED,0CAaC;AAED,wDAIC;AAED,4CAqEC;AAED,8CAQC;AAED,kBAMC;AAED,0DAKC;AAED,0EA0BC;AAGD,gDAMC;AAED,kEAIC;AAGD,8CAMC;AAED,sCAIC;AAED,8CAMC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,12 +22,13 @@ export declare class FederationFactory {
|
|
|
22
22
|
entityInterfaceFederationDataByTypeName: Map<string, EntityInterfaceFederationData>;
|
|
23
23
|
errors: Error[];
|
|
24
24
|
fieldConfigurationByFieldCoords: Map<string, FieldConfiguration>;
|
|
25
|
+
fieldCoordsByNamedTypeName: Map<string, Set<string>>;
|
|
25
26
|
inaccessibleCoords: Set<string>;
|
|
26
27
|
inaccessibleRequiredInputValueErrorByCoords: Map<string, Error>;
|
|
27
28
|
isMaxDepth: boolean;
|
|
28
29
|
internalGraph: Graph;
|
|
29
30
|
internalSubgraphBySubgraphName: Map<string, InternalSubgraph>;
|
|
30
|
-
|
|
31
|
+
invalidORScopesCoords: Set<string>;
|
|
31
32
|
isVersionTwo: boolean;
|
|
32
33
|
namedInputValueTypeNames: Set<string>;
|
|
33
34
|
namedOutputTypeNames: Set<string>;
|
|
@@ -78,7 +79,7 @@ export declare class FederationFactory {
|
|
|
78
79
|
handleInterfaceObjectForInternalGraph({ entityData, internalSubgraph, interfaceObjectData, interfaceObjectNode, resolvableKeyFieldSets, subgraphName, }: InterfaceObjectForInternalGraphOptions): void;
|
|
79
80
|
handleEntityInterfaces(): void;
|
|
80
81
|
fieldDataToGraphFieldData(fieldData: FieldData): GraphFieldData;
|
|
81
|
-
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName: Map<string, Array<ConstDirectiveNode>>,
|
|
82
|
+
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName: Map<string, Array<ConstDirectiveNode>>, coords: string): Array<ConstDirectiveNode>;
|
|
82
83
|
getRouterPersistedDirectiveNodes<T extends NodeData>(nodeData: T): ConstDirectiveNode[];
|
|
83
84
|
getFederatedGraphNodeDescription(data: NodeData): StringValueNode | undefined;
|
|
84
85
|
getNodeForRouterSchemaByData<T extends NodeData>(data: T): T['node'];
|
|
@@ -86,6 +87,7 @@ export declare class FederationFactory {
|
|
|
86
87
|
getValidFieldArgumentNodes(fieldData: FieldData): MutableInputValueNode[];
|
|
87
88
|
getNodeWithPersistedDirectivesByFieldData(fieldData: FieldData, argumentNodes: Array<MutableInputValueNode>): MutableFieldNode;
|
|
88
89
|
pushParentDefinitionDataToDocumentDefinitions(interfaceImplementations: InterfaceImplementationData[]): void;
|
|
90
|
+
pushNamedTypeAuthDataToFields(): void;
|
|
89
91
|
federateSubgraphData(): void;
|
|
90
92
|
validateInterfaceImplementationsAndPushToDocumentDefinitions(interfaceImplementations: InterfaceImplementationData[]): void;
|
|
91
93
|
pushVersionTwoDirectiveDefinitionsToDocumentDefinitions(): void;
|
|
@@ -33,12 +33,13 @@ class FederationFactory {
|
|
|
33
33
|
entityInterfaceFederationDataByTypeName;
|
|
34
34
|
errors = [];
|
|
35
35
|
fieldConfigurationByFieldCoords = new Map();
|
|
36
|
+
fieldCoordsByNamedTypeName;
|
|
36
37
|
inaccessibleCoords = new Set();
|
|
37
38
|
inaccessibleRequiredInputValueErrorByCoords = new Map();
|
|
38
39
|
isMaxDepth = false;
|
|
39
40
|
internalGraph;
|
|
40
41
|
internalSubgraphBySubgraphName;
|
|
41
|
-
|
|
42
|
+
invalidORScopesCoords = new Set();
|
|
42
43
|
isVersionTwo = false;
|
|
43
44
|
namedInputValueTypeNames = new Set();
|
|
44
45
|
namedOutputTypeNames = new Set();
|
|
@@ -63,6 +64,7 @@ class FederationFactory {
|
|
|
63
64
|
this.concreteTypeNamesByAbstractTypeName = params.concreteTypeNamesByAbstractTypeName;
|
|
64
65
|
this.entityDataByTypeName = params.entityDataByTypeName;
|
|
65
66
|
this.entityInterfaceFederationDataByTypeName = params.entityInterfaceFederationDataByTypeName;
|
|
67
|
+
this.fieldCoordsByNamedTypeName = params.fieldCoordsByNamedTypeName;
|
|
66
68
|
this.internalSubgraphBySubgraphName = params.internalSubgraphBySubgraphName;
|
|
67
69
|
this.internalGraph = params.internalGraph;
|
|
68
70
|
this.warnings = params.warnings;
|
|
@@ -731,6 +733,7 @@ class FederationFactory {
|
|
|
731
733
|
kind: sourceData.kind,
|
|
732
734
|
name: (0, utils_1.stringToNameNode)(sourceData.name),
|
|
733
735
|
},
|
|
736
|
+
subgraphNames: new Set(sourceData.subgraphNames),
|
|
734
737
|
};
|
|
735
738
|
}
|
|
736
739
|
case graphql_1.Kind.UNION_TYPE_DEFINITION: {
|
|
@@ -742,6 +745,7 @@ class FederationFactory {
|
|
|
742
745
|
name: (0, utils_1.stringToNameNode)(sourceData.name),
|
|
743
746
|
},
|
|
744
747
|
memberByMemberTypeName: new Map(sourceData.memberByMemberTypeName),
|
|
748
|
+
subgraphNames: new Set(sourceData.subgraphNames),
|
|
745
749
|
};
|
|
746
750
|
}
|
|
747
751
|
}
|
|
@@ -783,8 +787,6 @@ class FederationFactory {
|
|
|
783
787
|
return;
|
|
784
788
|
}
|
|
785
789
|
}
|
|
786
|
-
(0, utils_5.extractPersistedDirectives)(targetData.persistedDirectivesData, incomingData.directivesByDirectiveName, this.persistedDirectiveDefinitionByDirectiveName);
|
|
787
|
-
this.recordTagNamesByCoords(targetData);
|
|
788
790
|
(0, utils_6.addNewObjectValueMapEntries)(incomingData.configureDescriptionDataBySubgraphName, targetData.configureDescriptionDataBySubgraphName);
|
|
789
791
|
(0, utils_5.setLongestDescription)(targetData, incomingData);
|
|
790
792
|
(0, utils_5.setParentDataExtensionType)(targetData, incomingData);
|
|
@@ -835,9 +837,11 @@ class FederationFactory {
|
|
|
835
837
|
return;
|
|
836
838
|
}
|
|
837
839
|
(0, utils_6.addMapEntries)(incomingData.memberByMemberTypeName, targetData.memberByMemberTypeName);
|
|
840
|
+
(0, utils_6.addIterableValuesToSet)(incomingData.subgraphNames, targetData.subgraphNames);
|
|
838
841
|
return;
|
|
839
842
|
default:
|
|
840
843
|
// Scalar
|
|
844
|
+
(0, utils_6.addIterableValuesToSet)(incomingData.subgraphNames, targetData.subgraphNames);
|
|
841
845
|
return;
|
|
842
846
|
}
|
|
843
847
|
}
|
|
@@ -1092,7 +1096,7 @@ class FederationFactory {
|
|
|
1092
1096
|
}
|
|
1093
1097
|
handleEntityInterfaces() {
|
|
1094
1098
|
for (const [entityInterfaceTypeName, entityInterfaceData] of this.entityInterfaceFederationDataByTypeName) {
|
|
1095
|
-
(0, utils_3.
|
|
1099
|
+
(0, utils_3.subtractSet)(entityInterfaceData.interfaceFieldNames, entityInterfaceData.interfaceObjectFieldNames);
|
|
1096
1100
|
const entityInterface = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, entityInterfaceTypeName, string_constants_2.PARENT_DEFINITION_DATA);
|
|
1097
1101
|
if (entityInterface.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION) {
|
|
1098
1102
|
// TODO error
|
|
@@ -1113,7 +1117,6 @@ class FederationFactory {
|
|
|
1113
1117
|
}
|
|
1114
1118
|
interfaceObjectConfiguration.entityInterfaceConcreteTypeNames = entityInterfaceData.concreteTypeNames;
|
|
1115
1119
|
const fieldNames = interfaceObjectConfiguration.fieldNames;
|
|
1116
|
-
const authorizationData = this.authorizationDataByParentTypeName.get(entityInterfaceData.typeName);
|
|
1117
1120
|
this.internalGraph.setSubgraphName(subgraphName);
|
|
1118
1121
|
const interfaceObjectNode = this.internalGraph.addOrUpdateNode(entityInterfaceTypeName, { isAbstract: true });
|
|
1119
1122
|
for (const concreteTypeName of concreteTypeNames) {
|
|
@@ -1121,16 +1124,8 @@ class FederationFactory {
|
|
|
1121
1124
|
// error TODO
|
|
1122
1125
|
continue;
|
|
1123
1126
|
}
|
|
1124
|
-
if (authorizationData) {
|
|
1125
|
-
const concreteAuthorizationData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, concreteTypeName, () => (0, utils_3.newAuthorizationData)(concreteTypeName));
|
|
1126
|
-
for (const fieldAuthorizationData of authorizationData.fieldAuthorizationDataByFieldName.values()) {
|
|
1127
|
-
if (!(0, utils_3.upsertFieldAuthorizationData)(concreteAuthorizationData.fieldAuthorizationDataByFieldName, fieldAuthorizationData)) {
|
|
1128
|
-
this.invalidOrScopesHostPaths.add(`${concreteTypeName}.${fieldAuthorizationData.fieldName}`);
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
1127
|
const concreteTypeData = (0, utils_6.getOrThrowError)(this.parentDefinitionDataByTypeName, concreteTypeName, string_constants_2.PARENT_DEFINITION_DATA);
|
|
1133
|
-
if (
|
|
1128
|
+
if (!(0, utils_3.isObjectDefinitionData)(concreteTypeData)) {
|
|
1134
1129
|
continue;
|
|
1135
1130
|
}
|
|
1136
1131
|
// The subgraph locations of the interface object must be added to the concrete types that implement it
|
|
@@ -1146,14 +1141,25 @@ class FederationFactory {
|
|
|
1146
1141
|
for (const key of keys.filter((k) => !k.disableEntityResolver)) {
|
|
1147
1142
|
resolvableKeyFieldSets.add(key.selectionSet);
|
|
1148
1143
|
}
|
|
1144
|
+
const interfaceAuthData = this.authorizationDataByParentTypeName.get(entityInterfaceTypeName);
|
|
1149
1145
|
for (const fieldName of entityInterfaceData.interfaceObjectFieldNames) {
|
|
1146
|
+
const fieldCoords = `${concreteTypeName}.${fieldName}`;
|
|
1147
|
+
const interfaceFieldData = (0, utils_6.getOrThrowError)(entityInterface.fieldDataByFieldName, fieldName, `${entityInterfaceTypeName}.fieldDataByFieldName`);
|
|
1148
|
+
(0, utils_6.getValueOrDefault)(this.fieldCoordsByNamedTypeName, interfaceFieldData.namedTypeName, () => new Set()).add(fieldCoords);
|
|
1149
|
+
const interfaceFieldAuthData = interfaceAuthData?.fieldAuthDataByFieldName.get(fieldName);
|
|
1150
|
+
if (interfaceFieldAuthData) {
|
|
1151
|
+
const concreteAuthData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, concreteTypeName, () => (0, utils_3.newAuthorizationData)(concreteTypeName));
|
|
1152
|
+
if (!(0, utils_3.upsertFieldAuthorizationData)(concreteAuthData.fieldAuthDataByFieldName, interfaceFieldAuthData)) {
|
|
1153
|
+
this.invalidORScopesCoords.add(fieldCoords);
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1150
1156
|
const existingFieldData = concreteTypeData.fieldDataByFieldName.get(fieldName);
|
|
1151
1157
|
if (existingFieldData) {
|
|
1152
1158
|
// TODO handle shareability
|
|
1153
1159
|
continue;
|
|
1154
1160
|
}
|
|
1155
|
-
const
|
|
1156
|
-
concreteTypeData.fieldDataByFieldName.set(fieldName,
|
|
1161
|
+
const isInaccessible = entityInterface.isInaccessible || concreteTypeData.isInaccessible || interfaceFieldData.isInaccessible;
|
|
1162
|
+
concreteTypeData.fieldDataByFieldName.set(fieldName, this.copyFieldData(interfaceFieldData, isInaccessible));
|
|
1157
1163
|
}
|
|
1158
1164
|
configurationDataMap.set(concreteTypeName, configurationData);
|
|
1159
1165
|
this.handleInterfaceObjectForInternalGraph({
|
|
@@ -1176,7 +1182,7 @@ class FederationFactory {
|
|
|
1176
1182
|
subgraphNames: fieldData.subgraphNames,
|
|
1177
1183
|
};
|
|
1178
1184
|
}
|
|
1179
|
-
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName,
|
|
1185
|
+
getValidFlattenedPersistedDirectiveNodeArray(directivesByDirectiveName, coords) {
|
|
1180
1186
|
const persistedDirectiveNodes = [];
|
|
1181
1187
|
for (const [directiveName, directiveNodes] of directivesByDirectiveName) {
|
|
1182
1188
|
const persistedDirectiveDefinition = this.persistedDirectiveDefinitionByDirectiveName.get(directiveName);
|
|
@@ -1188,7 +1194,7 @@ class FederationFactory {
|
|
|
1188
1194
|
continue;
|
|
1189
1195
|
}
|
|
1190
1196
|
if (!persistedDirectiveDefinition.repeatable) {
|
|
1191
|
-
this.errors.push((0, errors_1.invalidRepeatedFederatedDirectiveErrorMessage)(directiveName,
|
|
1197
|
+
this.errors.push((0, errors_1.invalidRepeatedFederatedDirectiveErrorMessage)(directiveName, coords));
|
|
1192
1198
|
continue;
|
|
1193
1199
|
}
|
|
1194
1200
|
persistedDirectiveNodes.push(...directiveNodes);
|
|
@@ -1290,6 +1296,7 @@ class FederationFactory {
|
|
|
1290
1296
|
const enumValueNodes = [];
|
|
1291
1297
|
const clientEnumValueNodes = [];
|
|
1292
1298
|
const mergeMethod = this.getEnumValueMergeMethod(parentTypeName);
|
|
1299
|
+
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName));
|
|
1293
1300
|
for (const enumValueData of parentDefinitionData.enumValueDataByValueName.values()) {
|
|
1294
1301
|
const enumValueNode = (0, utils_5.getNodeForRouterSchemaByData)(enumValueData, this.persistedDirectiveDefinitionByDirectiveName, this.errors);
|
|
1295
1302
|
const isValueInaccessible = (0, utils_5.isNodeDataInaccessible)(enumValueData);
|
|
@@ -1391,8 +1398,10 @@ class FederationFactory {
|
|
|
1391
1398
|
const graphFieldDataByFieldName = new Map();
|
|
1392
1399
|
const invalidFieldNames = (0, utils_5.newInvalidFieldNames)();
|
|
1393
1400
|
const isObject = parentDefinitionData.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION;
|
|
1401
|
+
const authData = this.authorizationDataByParentTypeName.get(parentTypeName);
|
|
1402
|
+
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, authData);
|
|
1394
1403
|
for (const [fieldName, fieldData] of parentDefinitionData.fieldDataByFieldName) {
|
|
1395
|
-
(0, utils_5.
|
|
1404
|
+
(0, utils_5.propagateFieldAuthDirectives)(fieldData, authData);
|
|
1396
1405
|
const argumentNodes = this.getValidFieldArgumentNodes(fieldData);
|
|
1397
1406
|
if (isObject) {
|
|
1398
1407
|
(0, utils_5.validateExternalAndShareable)(fieldData, invalidFieldNames);
|
|
@@ -1447,6 +1456,7 @@ class FederationFactory {
|
|
|
1447
1456
|
if (constants_1.BASE_SCALARS.has(parentTypeName)) {
|
|
1448
1457
|
break;
|
|
1449
1458
|
}
|
|
1459
|
+
(0, utils_5.propagateAuthDirectives)(parentDefinitionData, this.authorizationDataByParentTypeName.get(parentTypeName));
|
|
1450
1460
|
this.routerDefinitions.push(this.getNodeForRouterSchemaByData(parentDefinitionData));
|
|
1451
1461
|
if ((0, utils_5.isNodeDataInaccessible)(parentDefinitionData)) {
|
|
1452
1462
|
this.validateReferencesOfInaccessibleType(parentDefinitionData);
|
|
@@ -1480,12 +1490,48 @@ class FederationFactory {
|
|
|
1480
1490
|
}
|
|
1481
1491
|
}
|
|
1482
1492
|
}
|
|
1493
|
+
pushNamedTypeAuthDataToFields() {
|
|
1494
|
+
for (const [typeName, namedTypeAuthData] of this.authorizationDataByParentTypeName) {
|
|
1495
|
+
if (!namedTypeAuthData.requiresAuthentication && namedTypeAuthData.requiredScopes.length < 1) {
|
|
1496
|
+
continue;
|
|
1497
|
+
}
|
|
1498
|
+
const fieldCoords = this.fieldCoordsByNamedTypeName.get(typeName);
|
|
1499
|
+
if (!fieldCoords) {
|
|
1500
|
+
continue;
|
|
1501
|
+
}
|
|
1502
|
+
for (const coords of fieldCoords) {
|
|
1503
|
+
// The coords should all be exactly <parentTypeName>.<fieldName>
|
|
1504
|
+
const segments = coords.split(string_constants_2.PERIOD);
|
|
1505
|
+
switch (segments.length) {
|
|
1506
|
+
case 2: {
|
|
1507
|
+
const parentAuthData = (0, utils_6.getValueOrDefault)(this.authorizationDataByParentTypeName, segments[0], () => (0, utils_3.newAuthorizationData)(segments[0]));
|
|
1508
|
+
const fieldAuthData = (0, utils_6.getValueOrDefault)(parentAuthData.fieldAuthDataByFieldName, segments[1], () => (0, utils_3.newFieldAuthorizationData)(segments[1]));
|
|
1509
|
+
fieldAuthData.inheritedData.requiresAuthentication ||= namedTypeAuthData.requiresAuthentication;
|
|
1510
|
+
if (fieldAuthData.inheritedData.requiredScopes.length * namedTypeAuthData.requiredScopes.length >
|
|
1511
|
+
constants_1.MAX_OR_SCOPES) {
|
|
1512
|
+
this.invalidORScopesCoords.add(coords);
|
|
1513
|
+
}
|
|
1514
|
+
else {
|
|
1515
|
+
fieldAuthData.inheritedData.requiredScopesByOR = (0, utils_3.mergeRequiredScopesByAND)(fieldAuthData.inheritedData.requiredScopesByOR, namedTypeAuthData.requiredScopesByOR);
|
|
1516
|
+
fieldAuthData.inheritedData.requiredScopes = (0, utils_3.mergeRequiredScopesByAND)(fieldAuthData.inheritedData.requiredScopes, namedTypeAuthData.requiredScopes);
|
|
1517
|
+
}
|
|
1518
|
+
break;
|
|
1519
|
+
}
|
|
1520
|
+
default: {
|
|
1521
|
+
break;
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1483
1527
|
federateSubgraphData() {
|
|
1484
1528
|
this.federateInternalSubgraphData();
|
|
1485
1529
|
this.handleEntityInterfaces();
|
|
1486
1530
|
// generate the map of tag data that is used by contracts
|
|
1487
1531
|
this.generateTagData();
|
|
1488
1532
|
this.pushVersionTwoDirectiveDefinitionsToDocumentDefinitions();
|
|
1533
|
+
// The named type auth data can only be pushed to the field once it has all been consolidated
|
|
1534
|
+
this.pushNamedTypeAuthDataToFields();
|
|
1489
1535
|
}
|
|
1490
1536
|
validateInterfaceImplementationsAndPushToDocumentDefinitions(interfaceImplementations) {
|
|
1491
1537
|
for (const { data, clientSchemaFieldNodes } of interfaceImplementations) {
|
|
@@ -1525,12 +1571,7 @@ class FederationFactory {
|
|
|
1525
1571
|
constants_1.TAG_DEFINITION,
|
|
1526
1572
|
constants_1.SCOPE_SCALAR_DEFINITION,
|
|
1527
1573
|
];
|
|
1528
|
-
this.clientDefinitions = [
|
|
1529
|
-
constants_1.AUTHENTICATED_DEFINITION,
|
|
1530
|
-
constants_1.DEPRECATED_DEFINITION,
|
|
1531
|
-
constants_1.REQUIRES_SCOPES_DEFINITION,
|
|
1532
|
-
constants_1.SCOPE_SCALAR_DEFINITION,
|
|
1533
|
-
];
|
|
1574
|
+
this.clientDefinitions = [constants_1.DEPRECATED_DEFINITION];
|
|
1534
1575
|
}
|
|
1535
1576
|
validatePathSegmentInaccessibility(path) {
|
|
1536
1577
|
if (!path) {
|
|
@@ -1855,8 +1896,8 @@ class FederationFactory {
|
|
|
1855
1896
|
if (this.subscriptionFilterDataByFieldPath.size > 0) {
|
|
1856
1897
|
this.validateSubscriptionFiltersAndGenerateConfiguration();
|
|
1857
1898
|
}
|
|
1858
|
-
if (this.
|
|
1859
|
-
this.errors.push((0, errors_1.orScopesLimitError)(
|
|
1899
|
+
if (this.invalidORScopesCoords.size > 0) {
|
|
1900
|
+
this.errors.push((0, errors_1.orScopesLimitError)(constants_1.MAX_OR_SCOPES, [...this.invalidORScopesCoords]));
|
|
1860
1901
|
}
|
|
1861
1902
|
for (const data of this.potentialPersistedDirectiveDefinitionDataByDirectiveName.values()) {
|
|
1862
1903
|
(0, utils_5.addValidPersistedDirectiveDefinitionNodeByData)(this.routerDefinitions, data, this.persistedDirectiveDefinitionByDirectiveName, this.errors);
|
|
@@ -2216,6 +2257,7 @@ function initializeFederationFactory(subgraphs) {
|
|
|
2216
2257
|
concreteTypeNamesByAbstractTypeName: result.concreteTypeNamesByAbstractTypeName,
|
|
2217
2258
|
entityDataByTypeName: result.entityDataByTypeName,
|
|
2218
2259
|
entityInterfaceFederationDataByTypeName,
|
|
2260
|
+
fieldCoordsByNamedTypeName: result.fieldCoordsByNamedTypeName,
|
|
2219
2261
|
internalSubgraphBySubgraphName: result.internalSubgraphBySubgraphName,
|
|
2220
2262
|
internalGraph: result.internalGraph,
|
|
2221
2263
|
warnings: result.warnings,
|